###############################################################################
# Copyright (c) 2000, 2006 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
#
# Miscellaneous
#
Wizard_title_new_testcase=New JUnit Test Case
Wizard_title_new_testsuite=New JUnit Test Suite
#
# CheckedTableSelectionDialog
#
CheckedTableSelectionDialog_emptyListMessage=No entries available.
CheckedTableSelectionDialog_selectAll=&Select All
CheckedTableSelectionDialog_deselectAll=&Deselect All

#
# NewTestCaseCreationWizard Page 1
#
NewTestCaseWizardPageOne_title=JUnit Test Case
NewTestCaseWizardPageOne_description=Select the name of the new JUnit test case. You have the options to specify\nthe class under test and on the next page, to select methods to be tested.
NewTestCaseWizardPageOne_methodStub_setUp=set&Up()
NewTestCaseWizardPageOne_methodStub_tearDown=&tearDown()
NewTestCaseWizardPageOne_methodStub_tearDownAfterClass=tearDownAfterClass()
NewTestCaseWizardPageOne_methodStub_constructor=&constructor
NewTestCaseWizardPageOne_methodStub_setUpBeforeClass=setUpBeforeClass()
NewTestCaseWizardPageOne_method_Stub_label=Which method stubs would you like to create?
NewTestCaseWizardPageOne_class_to_test_label=C&lass under test:
NewTestCaseWizardPageOne_class_to_test_browse=B&rowse...
NewTestCaseWizardPageOne_class_to_test_dialog_title=Class Under Test
NewTestCaseWizardPageOne_class_to_test_dialog_message=Test stubs will be generated for class:
NewTestCaseWizardPageOne_error_superclass_not_exist=Superclass does not exist.
NewTestCaseWizardPageOne__error_junit4NotOnbuildpath=JUnit 4 library is not on the classpath
NewTestCaseWizardPageOne_error_superclass_is_interface=Superclass is an interface.
NewTestCaseWizardPageOne_error_superclass_not_implementing_test_interface=Superclass does not implement the ''{0}'' interface.
NewTestCaseWizardPageOne_error_superclass_empty=Super class name is empty.
NewTestCaseWizardPageOne_error_java5required=JUnit 4 requires a project with 5.0 compliance or more. 
NewTestCaseWizardPageOne_error_class_to_test_not_valid=Class under test is not valid.
NewTestCaseWizardPageOne_error_class_to_test_not_exist=Class under test does not exist in current project.
NewTestCaseWizardPageOne_warning_class_to_test_is_interface=Warning: Class under test ''{0}'' is an interface.
NewTestCaseWizardPageOne_warning_class_to_test_not_visible=''{1}'' is not visible.
NewTestCaseWizardPageOne_linkedtext_junit4_notonbuildpath=JUnit 4 is not on the build path of project ''{0}''. <a href="a4">Click here</a> to add JUnit 4 to the build path and open the build path dialog.
NewTestCaseWizardPageOne_linkedtext_junit3_notonbuildpath=JUnit 3.8.1 is not on the build path of project ''{0}''. <a href="a3">Click here</a> to add JUnit 3.8.1 to the build path and open the build path dialog.
NewTestCaseWizardPageOne_comment_class_to_test=Test method for {0}.
NewTestCaseWizardPageOne_error_junitNotOnbuildpath=JUnit 3.8.1 is not on the project's build path.

NewTestCaseWizardPageTwo_selected_methods_label_one={0} method selected.
NewTestCaseWizardPageTwo_selected_methods_label_many={0} methods selected.
NewTestCaseWizardPageTwo_title=Test Methods
NewTestCaseWizardPageTwo_description=Select methods for which test method stubs should be created.
NewTestCaseWizardPageTwo_create_tasks_text=Create &tasks for generated test methods
NewTestCaseWizardPageTwo_create_final_method_stubs_text=&Create final method stubs

NewTestCaseWizardPageTwo_methods_tree_label=Available &methods:
NewTestCaseWizardPageTwo_selectAll=&Select All
NewTestCaseWizardPageTwo_deselectAll=&Deselect All

#
# NewTestSuiteCreationWizard
#
NewTestSuiteWiz_unsavedchangesDialog_title=Unsaved changes
NewTestSuiteWiz_unsavedchangesDialog_message={0} contains unsaved changes. Save before updating?

#
# NewTestSuiteCreationWizard Page
#
NewTestSuiteWizPage_title=JUnit Test Suite
NewTestSuiteWizPage_description=Create a new JUnit Test Suite class for a package
NewTestSuiteWizPage_classes_in_suite_label=Test &classes to include in suite:
NewTestSuiteWizPage_selectAll=&Select All
NewTestSuiteWizPage_deselectAll=D&eselect All
NewTestSuiteWizPage_createType_beginTask=Creating test suite....
NewTestSuiteWizPage_createType_updating_suite_method=Updating existing suite() method
NewTestSuiteWizPage_createType_updateErrorDialog_title=Error updating class
NewTestSuiteWizPage_createType_updateErrorDialog_message=There is no source associated with this class file
NewTestSuiteWizPage_classes_in_suite_error_no_testclasses_selected=Warning: No test classes selected
NewTestSuiteWizPage_typeName_error_name_empty=Test suite name is empty
NewTestSuiteWizPage_typeName_error_name_qualified=Test suite name must not be qualified
NewTestSuiteWizPage_typeName_error_name_not_valid=Test suite name is not valid.
NewTestSuiteWizPage_typeName_error_name_name_discouraged=Warning: Test suite name is discouraged.
NewTestSuiteWizPage_typeName_warning_already_exists=Warning: Test suite already exists. suite() method will be replaced.
NewTestSuiteWizPage_cannotUpdateDialog_title=Cannot update suite() method
NewTestSuiteWizPage_cannotUpdateDialog_message=The code in suite() that the wizard replaces must start with {0} and end with {1}

NewTestClassWizPage_treeCaption_classSelected={0} class selected
NewTestClassWizPage_treeCaption_classesSelected={0} classes selected
NewTestSuiteCreationWizardPage_infinite_recursion=Warning: Adding a test suite as a test case in itself will result in infinite recursion and StackOverflowError

#
# UpdateTestSuite
#
UpdateAllTests_selected_methods_label_one={0} type selected.
UpdateAllTests_selected_methods_label_many={0} types selected.
UpdateAllTests_title=Recreate Test Suite
UpdateAllTests_message=&Test Classes to be included
UpdateAllTests_beginTask=Recreating suite() method....
UpdateAllTests_cannotUpdate_errorDialog_title=Cannot recreate suite() method.
UpdateAllTests_cannotUpdate_errorDialog_message=The code in suite() that the wizard replaces must start with {0} and end with {1}
UpdateAllTests_cannotFind_errorDialog_title=Cannot find suite() method.
UpdateAllTests_cannotFind_errorDialog_message=The suite() method cannot be found.

#
# JUnitWizard
#
NewJUnitWizard_op_error_title=New
NewJUnitWizard_op_error_message=Creation of element failed.

#
# ExceptionHandler
#
ExceptionDialog_seeErrorLogMessage= See error log for details.
UpdateTestSuite_infinite_recursion=Adding suite to itself may result in StackOverflowError
UpdateTestSuite_error=Error occurred
UpdateTestSuite_update=Update JUnit Test Suite
UpdateTestSuite_could_not_update=The test suite could not be updated

NewTestCaseWizardPageOne_linkedtext_java5required=JUnit 4 requires a Java 5 project. <a href="c">Configure</a> project compliance and the project build path.
NewTestCaseWizardPageOne_not_yet_implemented_string=Not yet implemented
NewTestCaseWizardPageOne_junit3_radio_label=New JUnit &3.8.1 test
NewTestCaseWizardPageOne_junit4_radio_label=New JUnit &4 test
