# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

#
# This Bundle is for JUnit module
#




LBL_Action_CreateTest=Create J&Unit Tests

# Create Tests dialog
LBL_ClassToTest=&Class to Test:
LBL_PackageToTest=Package:
LBL_MultipleClassesSelected=More than one class is selected...
LBL_ClassName=Class &Name:
LBL_Location=&Location:
DefaultPackageName=<default package>
MSG_ClassnameMustNotBeEmpty=Class name must be specified.
MSG_InvalidClassName=Invalid class name
MSG_ClassNameNotDefault=Warning: You will not be able to navigate between the test class and the tested class if a non-default name is used.
MSG_ClassNameEndNotTest=Warning: The project's infrastructure may not be able to initiate execution of the test class if its name does not end with \"Test\".
MSG_NoTestTarget_Fo=Unable to locate test package folders for folder "{0}". The project must contain a test package folder to create tests. You can designate test package folders for your project in the Sources pane of the project Properties dialog.
MSG_NoTestTarget_Fi=Unable to locate test package folder for file "{0}". The project must contain a test package folder to create tests. You can designate test package folders for your project in the Sources pane of the project Properties dialog.
MSG_NoTestFolderFoundInProject=Unable to locate test package folders in project "{0}". The project must contain a test package folder to create tests. You can designate test package folders for your project in the Sources pane of the project Properties dialog.
MSG_MODIFIED_FILES=Warning: All modified files will be saved.
LBL_OK=OK
AN_OK=Confirm options
AD_OK=Confirm options

MSG_StatusBar_CreateTest_Begin=Creating tests ...
MSG_StatusBar_CreateTests_Finished=Tests created.
MSG_StatusBar_CreateTests_Cancelled=Tests generation cancelled.
LBL_Action_Tests=JUnit Tests
LBL_junit_settings=JUnit Module Settings

FMT_generator_status_ignoring=Ignoring: {0} ...

LBL_Action_OpenTest=JUnit Test
LBL_Action_GoToTest=Go to Test
LBL_Action_GoToTest_trimmed=Test
LBL_Action_GoToSource=Go to Tested Class
LBL_Action_GoToOpposite_Keystroke=ctrl alt k

HINT_Action_OpenTest=Open test class
HINT_Action_GoToTest=Jumps to the corresponding test class or source class
HINT_Action_CreateTest=Create test skeleton
#used in JUnitSettingsBeanInfo
LBL_value_not_found=(value not found)
HINT_internex=<description of first property>
FMT_generator_status_creating=Creating: {0} ...
FMT_generator_status_scanning=Scanning: {0} ...
LBL_generator_progress_title=Generating JUnit tests

MSG_file_from_node_failed=File cannot be found for selected node.
MSG_test_class_not_found=Test class for class "{0}" was not found.
MSG_testsuite_class_not_found_def_pkg=Test class for the default package was not found.
MSG_testsuite_class_not_found=Test class for package "{0}" was not found.
MSG_testsuite_class_for_root_package_not_found=Suite class "{0}" for root package was not found.
MSG_no_project=Source file {0} does not belong to any project.
MSG_no_tests_in_project=JUnit testing is not set up for source file {0}. \
    Usually this means that you must first activate JUnit testing in the project \
    that this source file belongs to.
MSG_testdir_not_found=The directory {0} for tests was not found. 
MSG_multiproject_selection=The selection cannot span multiple projects.
MSG_invalid_packages=Some package or class names are invalid. Cannot proceed.

MSG_cannot_set_junit_ver=Cannot update set of project's libraries

# TestCreator
TestCreator.suiteMethod.JavaDoc.comment=suite method automatically generated by JUnit module
#PARTI18N the localized message needs to be put after the '//' characters
TestCreator.suiteMethod.suiteBlock.comment=// if "JUNIT" tags are present, the body will be regenerated each time a suite class is created
TestCreator.variantMethods.JavaDoc.comment=Test of {0} method, of class {1}.
#PARTI18N - the localized message needs to be put after the 'TODO' characters
TestCreator.variantMethods.defaultComment=TODO review the generated test code and remove the default call to fail.
#PARTI18N - the localized message needs to be put after the 'TODO' characters
TestCreator.variantMethods.onlyComment=TODO add your test code.
TestCreator.variantMethods.defaultFailMsg=The test case is a prototype.
TestCreator.abstracImpl.JavaDoc.comment=Generated implementation of abstract class {0}. Please modify the sample bodies of generated methods.
#PARTI18N - the localized message needs to be put after the '// TODO' characters
TestCreator.methodImpl.bodyComment=// TODO fill the body in order to provide useful implementation
#PARTI18N - the localized message needs to be put after the 'TODO' characters
TestCreator.javaClass.addTestsHereComment.l1=// TODO add test methods here. The name must begin with 'test'. For example:
TestCreator.javaClass.addTestsHereComment.l2=// public void testHello() {}


# Create tests window
JUnitCfgOfCreate.Title=Create Tests
JUnitCfgOfCreate.AD=Create Tests

# Class name
JUnitCfgOfCreate.clsName.toolTip=Name of the test class
JUnitCfgOfCreate.clsName.AN=Test Class Name
JUnitCfgOfCreate.clsName.AD=Name of the test class to be created

# Location
JUnitCfgOfCreate.location.toolTip=Target source root for the test class
JUnitCfgOfCreate.location.AN=Test Class Location
JUnitCfgOfCreate.location.AD=Target source root for the test class

# Generate options
JUnitCfgOfCreate.jpCodeGen.title=\ Code Generation\ 

# Generate tests for public methods
JUnitCfgOfCreate.chkPublic.text=\ &Public
JUnitCfgOfCreate.chkPublic.toolTip=Generate tests for public member methods.
JUnitCfgOfCreate.chkPublic.AN=Public Methods
JUnitCfgOfCreate.chkPublic.AD=Generate tests for public member methods.
PROP_members_public=Generate Tests for Public Member Methods
HINT_members_public=Generate Tests for Public Member Methods

# Generate tests for protected methods
JUnitCfgOfCreate.chkProtected.text=\ Pr&otected
JUnitCfgOfCreate.chkProtected.toolTip=Generate tests for protected member methods.
JUnitCfgOfCreate.chkProtected.AN=Protected Methods
JUnitCfgOfCreate.chkProtected.AD=Generate tests for protected member methods.
PROP_members_protected=Generate Tests for Protected Member Methods
HINT_members_protected=Generate Tests for Protected Member Methods


# Generate tests for package private methods
JUnitCfgOfCreate.chkPackage.text=\ Pac&kage Private
JUnitCfgOfCreate.chkPackage.toolTip=Generate tests for default member methods.
JUnitCfgOfCreate.chkPackage.AN=Package Private Methods
JUnitCfgOfCreate.chkPackage.AD=Generate tests for default member methods.
PROP_members_package=Generate Tests for Default Member Methods
HINT_members_package=Generate Tests for Default Member Methods


# Generate Comments
JUnitCfgOfCreate.chkComments.text=\ Source Code H&ints
JUnitCfgOfCreate.chkComments.toolTip=Generate comments in test method bodies.
JUnitCfgOfCreate.chkComments.AN=Generate Source Code Hints
JUnitCfgOfCreate.chkComments.AD=Generate comments in test method bodies.
PROP_body_comments=Generate Comments in Test Method Bodies
HINT_body_comments=Generate Comments

# Generate default bodies
JUnitCfgOfCreate.chkContent.text=\ Default &Method Bodies
JUnitCfgOfCreate.chkContent.toolTip=Generate default bodies of test methods.
JUnitCfgOfCreate.chkContent.AN=Generate Default Method Bodies
JUnitCfgOfCreate.chkContent.AD=Generate default bodies of test methods.
PROP_body_content=Generate Default Bodies of Test Methods
HINT_body_content=Generate Default Bodies of Test Methods

# Generate Javadoc
JUnitCfgOfCreate.chkJavaDoc.text=\ &Javadoc Comments
JUnitCfgOfCreate.chkJavaDoc.toolTip=Generate Javadoc comments.
JUnitCfgOfCreate.chkJavaDoc.AN=Generate Javadoc Comments
JUnitCfgOfCreate.chkJavaDoc.AD=Generate Javadoc comments.
PROP_javadoc=Generate Javadoc Comments
HINT_javadoc=Generate Javadoc Comments


# Include abstract classes
JUnitCfgOfCreate.chkAbstractImpl.text=\ &Abstract Classes
JUnitCfgOfCreate.chkAbstractImpl.toolTip=Generate tests for abstract classes.
JUnitCfgOfCreate.chkAbstractImpl.AN=Include Abstract Classes
JUnitCfgOfCreate.chkAbstractImpl.AD=Include abstract classes.
PROP_generate_abstract_impl=Include Abstract Classes
HINT_generate_abstract_impl=Generate Tests for Abstract Classes

# Include exceptions
JUnitCfgOfCreate.chkExceptions.text=\ &Exception Classes
JUnitCfgOfCreate.chkExceptions.toolTip=Generate tests for exception classes.
JUnitCfgOfCreate.chkExceptions.AN=Include Exception Classes
JUnitCfgOfCreate.chkExceptions.AD=Include exception classes.
HINT_generate_exception_classes=Generate Tests for Exception Classes
PROP_generate_exception_classes=Include Exception Classes

# Include Package Private Classes
JUnitCfgOfCreate.chkPackagePrivateClasses.text=\ Packa&ge Private Classes
JUnitCfgOfCreate.chkPackagePrivateClasses.toolTip=Generate tests for package private classes.
JUnitCfgOfCreate.chkPackagePrivateClasses.AN=Include Package Private Classes
JUnitCfgOfCreate.chkPackagePrivateClasses.AD=Include package private classes.
PROP_include_package_private_classes=Include Package Private Classes
HINT_include_package_private_classes=Generate Tests for Package Private Classes


# Generate suites
JUnitCfgOfCreate.chkGenerateSuites.text=\ Gene&rate Test Suites
JUnitCfgOfCreate.chkGenerateSuites.toolTip=Generate suite classes.
JUnitCfgOfCreate.chkGenerateSuites.AN=Generate Suite Classes
JUnitCfgOfCreate.chkGenerateSuites.AD=Generate suite classes.
PROP_generate_suite_classes=Generate Suite Classes
HINT_generate_suite_classes=Generate Suite Classes


# Generate setUp() or @Before method
JUnitCfgOfCreate.chkSetUp.text=\ Te&st Initializer
JUnitCfgOfCreate.chkSetUp.toolTip=setUp() / @Before
JUnitCfgOfCreate.chkSetUp.AN=Generate Test Initializer Method
JUnitCfgOfCreate.chkSetUp.AD=Generate test initializer method. The method will be either the setUp method or a method with annotation "Before"


# Generate tearDown() or @After method
JUnitCfgOfCreate.chkTearDown.text=\ Test Finali&zer
JUnitCfgOfCreate.chkTearDown.toolTip=tearDown() / @After
JUnitCfgOfCreate.chkTearDown.AN=Generate Test Finalizer Method
JUnitCfgOfCreate.chkTearDown.AD=Generate test finalizer method. The method will be either the tearDown method or a method with annotation "After"


# Generate @BeforeClass method
JUnitCfgOfCreate.chkBeforeClass.text=\ Test Class Initializer
JUnitCfgOfCreate.chkBeforeClass.toolTip=Generate @BeforeClass method
JUnitCfgOfCreate.chkBeforeClass.AN=Generate Test Class Initializer Method
JUnitCfgOfCreate.chkBeforeClass.AD=Generate initialization method annotated with the BeforeClass annotation


# Generate @AfterClass method
JUnitCfgOfCreate.chkAfterClass.text=\ Test Class Finalizer
JUnitCfgOfCreate.chkAfterClass.toolTip=Generate @AfterClass method
JUnitCfgOfCreate.chkAfterClass.AN=Generate Test Class Finalizer Method
JUnitCfgOfCreate.chkAfterClass.AD=Generate finalizer method annotated with the AfterClass annotation


# CheckBox group titles
JUnitCfgOfCreate.groupAccessLevels=Method Access Levels
JUnitCfgOfCreate.groupClassTypes=Class Types
JUnitCfgOfCreate.groupOptClasses=Optional Classes
JUnitCfgOfCreate.groupOptCode=Generated Code
JUnitCfgOfCreate.groupOptComments=Generated Comments

# Generate main method
PROP_generate_main_method=Generate main Method
HINT_generate_main_method=Generate main Method
PROP_generate_main_method_body=Body of the main Method
HINT_generate_main_method_body=Body of the main Method

# Generate test initializers and finalizers
PROP_generate_setUp=Generate Test Initializer
HINT_generate_setUp=setUp() or @Before
PROP_generate_tearDown=Generate Test Finalizer
HINT_generate_tearDown=tearDown() or @After
PROP_generate_class_setUp=Generate Test Class Initializer
HINT_generate_class_setUp=@BeforeClass
PROP_generate_class_tearDown=Generate Test Class Finalizer
HINT_generate_class_tearDown=@AfterClass
#NOI18N - this value is in .properties just to allow branding
PROP_generate_setUp_default=true
#NOI18N - this value is in .properties just to allow branding
PROP_generate_tearDown_default=true
#NOI18N - this value is in .properties just to allow branding
PROP_generate_class_setUp_default=true
#NOI18N - this value is in .properties just to allow branding
PROP_generate_class_tearDown_default=true

# test skeleton generator (JUnit 3 / JUnit 4 / ...)

PROP_generator=Test Skeleton Generator
HINT_generator=Test Skeleton Generator
LBL_JUnit3_generator=JUnit &3.x
AD_JUnit3_generator=Create tests based on JUnit 3.x
LBL_JUnit4_generator=JUnit &4.x
AD_JUnit4_generator=Create tests based on JUnit 4.x
LBL_JUnit4_generator_reqs=JUnit &4.x (requires source level 1.5+)
AD_JUnit4_generator_reqs=JUnit 4.x (requires source level 1.5+)
LBL_JUnit_generator_ask_user=ask

LBL_title_select_generator=Select JUnit Version
AD_title_select_generator=Select JUnit Version
MSG_select_junit_version_srclvl_unknown=Unable to detect source level of the project. \
                                        Select JUnit version for which the created test \
                                        skeletons should be created:
MSG_select_junit_version=Select JUnit version for which the created test \
                         skeletons should be created:
LBL_Select=&Select
AD_Select = Select Junit test version
AN_Select = Select Junit test version

LBL_title_cannot_use_junit4=Cannot Create JUnit 4.x Tests
LBL_create_junit3_tests=Create JUnit 3.x tests
AD_create_junit3_tests=Create JUnit 3.x tests
AN_create_junit3_tests=Create JUnit 3.x tests
MSG_last_was_junit4_what_now=Previous JUnit tests created for this project \
                             were JUnit 4.x tests. \
                             The project''s source level is currently set to {0}. \
                             This source level does not support JUnit 4.x tests. \
                             Do you want to create JUnit 3.x tests instead?

MSG_cannot_use_default_junit4=The JUnit module is set to create JUnit 4.x tests \
                              by default. The project in which you want to \
                              create tests has source level set to {0}. \
                              This source level does not support creating JUnit 4.x tests. \
                              Do you want to create JUnit 3.x tests instead?

#NOI18N - this property should not be localized - it is Java code
PROP_generate_main_method_body_default_value=junit.textui.TestRunner.run(suite());

# Test class & test suite templates for JUnit 3.x tests
#NOI18N - this value is in .properties just to allow branding
PROP_junit3_testClassTemplate=Templates/UnitTests/JUnit3TestClass.java
#NOI18N - this value is in .properties just to allow branding
PROP_junit3_testSuiteTemplate=Templates/UnitTests/JUnit3Suite.java

# Test class & test suite templates for JUnit 4.x tests
#NOI18N - this value is in .properties just to allow branding
PROP_junit4_testClassTemplate=Templates/UnitTests/JUnit4TestClass.java
#NOI18N - this value is in .properties just to allow branding
PROP_junit4_testSuiteTemplate=Templates/UnitTests/JUnit4Suite.java

# Test class template for JUnit 5.x tests
#NOI18N - this value is in .properties just to allow branding
PROP_junit5_testClassTemplate=Templates/UnitTests/JUnit5TestClass.java
#NOI18N - this value is in .properties just to allow branding
PROP_junit5_testSuiteTemplate=Templates/UnitTests/JUnit5Suite.java

MSG_using_junit5_for_test_suites=JUnit 5 doesn't support Test Suites natively.  \
                              To use the generated Test Suite you'll need to use the JUnit\
                              Vintage engine.  These dependencies will need \
                              to be included manually.

# Test case classname prefix/suffix
#NOI18N - this value is in .properties just to allow branding
PROP_test_classname_prefix=
#NOI18N - this value is in .properties just to allow branding
PROP_test_classname_suffix=Test
#NOI18N - this value is in .properties just to allow branding
PROP_integration_test_classname_suffix=IT

# Test suite classname prefix/suffix
#NOI18N - this value is in .properties just to allow branding
PROP_suite_classname_prefix=
#NOI18N - this value is in .properties just to allow branding
PROP_suite_classname_suffix=Suite

PROP_root_suite_classname=Root Suite Class Name
HINT_root_suite_classname=Root Suite Class Name
#NOI18N - this value is in .properties just to allow branding
PROP_root_suite_classname_default_value=RootSuite

#NOI18N - this value is in .properties just to allow branding
PROP_generate_tests_from_test_classes=false

#
# Layer stuff
#

# Help stuff
Menu/Help/HelpShortcuts/org-netbeans-modules-junit-mainpage.xml=JUnit Module Help
Actions/Help/org-netbeans-modules-junit-mainpage.xml=JUnit Module Help

# Options stuff
Actions/JUnitTests=JUnit Tests

# Templates stuff
Templates/UnitTests=Unit Tests
Templates/UnitTests/SimpleJUnitTest.java=Test for Existing Class
Templates/UnitTests/EmptyJUnitTest.java=JUnit Test
Templates/UnitTests/TestSuite.java=Test Suite
Templates/UnitTests/JUnit3TestClass.java=Test Class - JUnit 3.x
Templates/UnitTests/JUnit3Suite.java=Test Suite - JUnit 3.x
Templates/UnitTests/JUnit4TestClass.java=Test Class - JUnit 4.x
Templates/UnitTests/JUnit4Suite.java=Test Suite - JUnit 4.x
Templates/UnitTests/junit-custom.xml=Custom JUnit execution script


#
# No longer used labels (though they may be used in the future again)
#

# manifest.mf
OpenIDE-Module-Name=JUnit Tests
OpenIDE-Module-Display-Category=Java
OpenIDE-Module-Short-Description=Creates tests suitable for the JUnit framework.
OpenIDE-Module-Long-Description=The JUnit module allows you to create test classes suitable for the JUnit framework.

#if no testable class is found in the selected folders
MSG_No_test_created=No tests were created because no testable class was found.

MSG_template_not_found=Template file {0} was not found. Check the JUnit templates in the Template manager.
MSG_skipped_class=Class {0} was skipped because it was {1}.
MSG_skipped_classes=Some classes were skipped because they were {0}.

MSG_MISSING_TEST=The directory for tests was not found. Use source directory instead?
MSG_MISSING_TEST_TITLE=Missing Test Directory

# human-readable strings for reasons to skip test creation for a class
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_OK=testable
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_Private=private
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_PkgPrivate=package-private
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_ExceptionClass=an exception class
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_NonstaticInnerClass=nonstatic nested
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_AbstractClass=abstract
# Preceded in the UI by "The class was skipped because it is"
TestabilityResult_TestClass=a test class
# Preceded in the UI by "The class was skipped because it"
TestabilityResult_NoTestableMethods=contains no testable methods

# separators used between reasons in a report about skipped classes
# the " " are stripped, they are included to correctly represent spaces
COMMA=", "

# used to separate the last reason in a disjunctive sentence like:
# Some classes were skipped because they were abstract OR package private
# the " are stripped
OR=" or "

# used to separate t he last reason in a conjunctive sentence like:
# The class ... was skipped because it was abstract AND package private.
# the " are stripped
AND=" and "
