diff --git a/.classpath b/.classpath index 437e0a4..d02e9eb 100644 --- a/.classpath +++ b/.classpath @@ -1,11 +1,29 @@ - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index cde66fd..dfaed2e 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,11 @@ *.war *.ear +/target/ + +settings.xml +/.idea +TeachingKidsProgramming.Source.Java.iml + +*.orig +*.received.* \ No newline at end of file diff --git a/.project b/.project index 4aba24c..9fd8bd9 100644 --- a/.project +++ b/.project @@ -10,8 +10,14 @@ + + org.eclipse.m2e.core.maven2Builder + + + + org.eclipse.m2e.core.maven2Nature org.eclipse.jdt.core.javanature diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..987b2d7 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=ISO-8859-1 +encoding//src/main/resources=ISO-8859-1 +encoding//src/test/java=ISO-8859-1 +encoding//src/test/resources=ISO-8859-1 +encoding/=ISO-8859-1 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index d17b672..19db9b1 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,289 @@ eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=true +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=2 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=52 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=18 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=82 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=64 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=2 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=64 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=0 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0 +org.eclipse.jdt.core.formatter.blank_lines_before_method=0 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=0 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=false +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=false +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=80 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=true +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=115 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=0 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..0279f72 --- /dev/null +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +formatter_profile=_Spun +formatter_settings_version=12 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/TeachingKidsProgramming.iml b/TeachingKidsProgramming.iml new file mode 100644 index 0000000..c5c7943 --- /dev/null +++ b/TeachingKidsProgramming.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/build.xml b/build.xml old mode 100644 new mode 100755 similarity index 57% rename from build/build.xml rename to build.xml index ae8de27..e5b4cee --- a/build/build.xml +++ b/build.xml @@ -1,27 +1,45 @@ - - - - - ${targetJavaClass} - - + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + + - + + + ${targetJavaClass} + + + + + + + @@ -29,33 +47,21 @@ - + + + + + + + - - - - - - - - - - - - - - - - - - - + @@ -71,11 +77,26 @@ + + + + + + + + + + + + + + + @@ -84,6 +105,7 @@ + diff --git a/build/maven-ant-tasks-2.1.3.jar b/build/maven-ant-tasks-2.1.3.jar new file mode 100644 index 0000000..bec446f Binary files /dev/null and b/build/maven-ant-tasks-2.1.3.jar differ diff --git a/build/properties/teaching_kids_programming.properties b/build/properties/teaching_kids_programming.properties old mode 100644 new mode 100755 index 216ebec..c069fd0 --- a/build/properties/teaching_kids_programming.properties +++ b/build/properties/teaching_kids_programming.properties @@ -1,13 +1,9 @@ -home=C:/Users/lynnlangit/Documents/GitHub/TKPSource/TeachingKidsProgramming.Source.Java -src=${home}/src -tkp_workspace=C:/Users/lynnlangit/Documents/GitHub/TeachingKidsProgramming.Java -tkp_project=${tkp_workspace}/TeachingKidsProgramming -build_home=/temp/builds -build=${build_home}/build -targetJavaClass=org/teachingextensions/**,you/** -additonal_java_sources=C:/Users/lynnlangit/Documents/GitHub/ApprovalTests.Java/java + + + +additonal_java_sources=${home}/../ApprovalTests.Java/java jars=${src}/jars -jar=${build}/TeachingKidsProgramming.jar -documentation=${home}/build/resources/teaching_kids_programming -excludeTests=true + + + diff --git a/build/properties/tkplauncher.properties b/build/properties/tkplauncher.properties old mode 100644 new mode 100755 diff --git a/build/resources/teaching_kids_programming/build.xml b/build/resources/teaching_kids_programming/build.xml old mode 100644 new mode 100755 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..948a44a --- /dev/null +++ b/pom.xml @@ -0,0 +1,121 @@ + + 4.0.0 + org.teachingkidsprogramming + TeachingKidsProgramming + 0.0.3-SNAPSHOT + jar + ${project.groupId}:${project.artifactId} + A proven library of high-quality programming courseware for kids. TKP is a designated project of the US + non-profit (501c3) the MONA Foundation. The mission of the MONA Foundation is to "support grassroots + educational initiatives that educate everyone—including girls." + http://teachingkidsprogramming.org/ + + + The Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + + + + + Jim Counts + jamesrcounts@outlook.com + Teaching Kids Programming + http://teachingkidsprogramming.org/ + + + Lynn Langit + lynn@teachingkidsprogramming.org + Teaching Kids Programming + http://teachingkidsprogramming.org/ + + + + scm:git:git@github.com:TeachingKidsProgramming/TeachingKidsProgramming.Source.Java.git + scm:git:git@github.com:TeachingKidsProgramming/TeachingKidsProgramming.Source.Java.git + + git@github.com:TeachingKidsProgramming/TeachingKidsProgramming.Source.Java.git + + + + junit + junit + 4.12 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + velocity + velocity + 1.4 + + + commons-collections + commons-collections + 3.2.1 + + + log4j + log4j + 1.2.14 + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.10.1 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.2 + + 1.7 + 1.7 + ISO-8859-1 + -Xlint:unchecked + + + + org.apache.maven.plugins + maven-repository-plugin + 2.4 + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + + + + http://teachingkidsprogramming.org/ + Teaching Kids Programming + + + ISO-8859-1 + + + + sonatype + + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + \ No newline at end of file diff --git a/src/jars/commons-collections-3.1.jar b/src/jars/commons-collections-3.1.jar deleted file mode 100644 index 41e230f..0000000 Binary files a/src/jars/commons-collections-3.1.jar and /dev/null differ diff --git a/src/jars/junit-4.11.jar b/src/jars/junit-4.11.jar new file mode 100644 index 0000000..aaf7444 Binary files /dev/null and b/src/jars/junit-4.11.jar differ diff --git a/src/jars/log4j-1.2.9.jar b/src/jars/log4j-1.2.9.jar deleted file mode 100644 index a6568b0..0000000 Binary files a/src/jars/log4j-1.2.9.jar and /dev/null differ diff --git a/src/jars/servlet.jar b/src/jars/servlet.jar deleted file mode 100644 index 1c3e2db..0000000 Binary files a/src/jars/servlet.jar and /dev/null differ diff --git a/src/jars/velocity-1.4-p1.jar b/src/jars/velocity-1.4-p1.jar deleted file mode 100644 index dca8b4e..0000000 Binary files a/src/jars/velocity-1.4-p1.jar and /dev/null differ diff --git a/src/org/teachingextensions/approvals/lite/ApprovalApprover.java b/src/main/java/org/teachingextensions/approvals/lite/ApprovalApprover.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ApprovalApprover.java rename to src/main/java/org/teachingextensions/approvals/lite/ApprovalApprover.java diff --git a/src/org/teachingextensions/approvals/lite/ApprovalFailureOverrider.java b/src/main/java/org/teachingextensions/approvals/lite/ApprovalFailureOverrider.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ApprovalFailureOverrider.java rename to src/main/java/org/teachingextensions/approvals/lite/ApprovalFailureOverrider.java diff --git a/src/org/teachingextensions/approvals/lite/ApprovalFailureReporter.java b/src/main/java/org/teachingextensions/approvals/lite/ApprovalFailureReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ApprovalFailureReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/ApprovalFailureReporter.java diff --git a/src/org/teachingextensions/approvals/lite/ApprovalReporterWithCleanUp.java b/src/main/java/org/teachingextensions/approvals/lite/ApprovalReporterWithCleanUp.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ApprovalReporterWithCleanUp.java rename to src/main/java/org/teachingextensions/approvals/lite/ApprovalReporterWithCleanUp.java diff --git a/src/org/teachingextensions/approvals/lite/ApprovalWriter.java b/src/main/java/org/teachingextensions/approvals/lite/ApprovalWriter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ApprovalWriter.java rename to src/main/java/org/teachingextensions/approvals/lite/ApprovalWriter.java diff --git a/src/org/teachingextensions/approvals/lite/Approvals.java b/src/main/java/org/teachingextensions/approvals/lite/Approvals.java similarity index 64% rename from src/org/teachingextensions/approvals/lite/Approvals.java rename to src/main/java/org/teachingextensions/approvals/lite/Approvals.java index 8dbec1b..c9a224b 100644 --- a/src/org/teachingextensions/approvals/lite/Approvals.java +++ b/src/main/java/org/teachingextensions/approvals/lite/Approvals.java @@ -14,91 +14,97 @@ import org.teachingextensions.approvals.lite.writers.ApprovalTextWriter; import org.teachingextensions.approvals.lite.writers.ComponentApprovalWriter; import org.teachingextensions.approvals.lite.writers.ImageApprovalWriter; - -public class Approvals { - public static void verify(String response) throws Exception { +public class Approvals +{ + public static void verify(String response) throws Exception + { verify(new ApprovalTextWriter(response, "txt"), FileTypes.Text); } - - public static void verifyAll(String header, T[] values) { + public static void verifyAll(String header, T[] values) + { Approvals.verifyAll(header, Arrays.asList(values)); } - - public static void verifyAll(String header, Iterable values) { - Approvals.verifyAll(header, values, new Function1() { + public static void verifyAll(String header, Iterable values) + { + Approvals.verifyAll(header, values, new Function1() + { @Override - public String call(T i) { + public String call(T i) + { return i + ""; } }); - } - - public static void verifyAll(String header, T[] values, - Function1 f1) { + public static void verifyAll(String header, T[] values, Function1 f1) + { verifyAll(header, Arrays.asList(values), f1); } - - public static void verifyAll(String header, Iterable array, - Function1 f1) { + public static void verifyAll(String header, Iterable array, Function1 f1) + { String text = formatHeader(header) + ArrayUtils.toString(array, f1); verify(new ApprovalTextWriter(text, "txt"), FileTypes.Text); } - - private static String formatHeader(String header) { + private static String formatHeader(String header) + { return StringUtils.isEmpty(header) ? "" : header + "\r\n\r\n\r\n"; } - - public static void verifyHtml(String response) throws Exception { + public static void verifyHtml(String response) throws Exception + { verify(new ApprovalTextWriter(response, "html"), FileTypes.Html); } - - public static void verify(Component component) { - BufferedImage image = ComponentApprovalWriter.drawComponent(component); - Approvals.verify(image); + public static void verify(Component component) + { + Approvals.verify(new ComponentApprovalWriter(component), FileTypes.Image); } - - public static void verify(BufferedImage bufferedImage) { + public static void verify(BufferedImage bufferedImage) + { verify(new ImageApprovalWriter(bufferedImage), FileTypes.Image); } - - public static void verify(ApprovalWriter writer, ApprovalNamer namer, - ApprovalFailureReporter reporter) { + public static void verify(ApprovalWriter writer, ApprovalNamer namer, ApprovalFailureReporter reporter) + { verify(new FileApprover(writer, namer), reporter); } - - public static void verify(ApprovalWriter writer, String fileType) { + public static void verify(ApprovalWriter writer, String fileType) + { verify(writer, createApprovalNamer(), ReporterFactory.get(fileType)); } - - public static void verify(FileApprover approver, - ApprovalFailureReporter reporter) { - try { - if (!approver.approve()) { + public static void verify(FileApprover approver, ApprovalFailureReporter reporter) + { + try + { + if (!approver.approve()) + { boolean passed = false; - if (reporter instanceof ApprovalFailureOverrider) { - passed = approver - .askToChangeReceivedToApproved((ApprovalFailureOverrider) reporter); + if (reporter instanceof ApprovalFailureOverrider) + { + passed = approver.askToChangeReceivedToApproved((ApprovalFailureOverrider) reporter); } - if (!passed) { + if (!passed) + { approver.reportFailure(reporter); approver.fail(); - } else { + } + else + { approver.cleanUpAfterSuccess(reporter); } - } else { + } + else + { approver.cleanUpAfterSuccess(reporter); } - } catch (Exception e) { + } + catch (Exception e) + { throw ObjectUtils.throwAsError(e); } } - - public static ApprovalNamer createApprovalNamer() { + public static ApprovalNamer createApprovalNamer() + { return new JUnitStackTraceNamer(); } - - public static void verify(Object o) throws Exception { + public static void verify(Object o) throws Exception + { Approvals.verify(o + ""); } } diff --git a/src/org/teachingextensions/approvals/lite/FileApprover.java b/src/main/java/org/teachingextensions/approvals/lite/FileApprover.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/FileApprover.java rename to src/main/java/org/teachingextensions/approvals/lite/FileApprover.java diff --git a/src/org/teachingextensions/approvals/lite/ReporterFactory.java b/src/main/java/org/teachingextensions/approvals/lite/ReporterFactory.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/ReporterFactory.java rename to src/main/java/org/teachingextensions/approvals/lite/ReporterFactory.java diff --git a/src/org/teachingextensions/approvals/lite/namer/ApprovalNamer.java b/src/main/java/org/teachingextensions/approvals/lite/namer/ApprovalNamer.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/namer/ApprovalNamer.java rename to src/main/java/org/teachingextensions/approvals/lite/namer/ApprovalNamer.java diff --git a/src/org/teachingextensions/approvals/lite/namer/ApprovalResults.java b/src/main/java/org/teachingextensions/approvals/lite/namer/ApprovalResults.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/namer/ApprovalResults.java rename to src/main/java/org/teachingextensions/approvals/lite/namer/ApprovalResults.java diff --git a/src/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamer.java b/src/main/java/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamer.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamer.java rename to src/main/java/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamer.java diff --git a/src/org/teachingextensions/approvals/lite/namer/NamerFactory.java b/src/main/java/org/teachingextensions/approvals/lite/namer/NamerFactory.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/namer/NamerFactory.java rename to src/main/java/org/teachingextensions/approvals/lite/namer/NamerFactory.java diff --git a/src/org/teachingextensions/approvals/lite/namer/OsEnvironmentLabeller.java b/src/main/java/org/teachingextensions/approvals/lite/namer/OsEnvironmentLabeller.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/namer/OsEnvironmentLabeller.java rename to src/main/java/org/teachingextensions/approvals/lite/namer/OsEnvironmentLabeller.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/ClipboardReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/ClipboardReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/ClipboardReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/ClipboardReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/DelayedClipboardReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/DelayedClipboardReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/DelayedClipboardReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/DelayedClipboardReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/DiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/DiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/DiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/DiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/EnvironmentAwareReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/EnvironmentAwareReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/EnvironmentAwareReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/EnvironmentAwareReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/FileLauncherReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/FileLauncherReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/FileLauncherReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/FileLauncherReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/FirstWorkingReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/FirstWorkingReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/FirstWorkingReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/FirstWorkingReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/GenericDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/GenericDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/ImageReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/ImageReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/ImageReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/ImageReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/ImageWebReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/ImageWebReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/ImageWebReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/ImageWebReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/JunitReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/JunitReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/JunitReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/JunitReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/MultiReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/MultiReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/MultiReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/MultiReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/MultipleExceptions.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/MultipleExceptions.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/MultipleExceptions.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/MultipleExceptions.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/QuietReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/QuietReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/QuietReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/QuietReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/UseReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/UseReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/UseReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/UseReporter.java diff --git a/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareImageReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareImageReporter.java new file mode 100644 index 0000000..cafa3ee --- /dev/null +++ b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareImageReporter.java @@ -0,0 +1,18 @@ +package org.teachingextensions.approvals.lite.reporters.macosx; + +import org.teachingextensions.approvals.lite.reporters.GenericDiffReporter; + +import java.text.MessageFormat; + +public class BeyondCompareImageReporter extends GenericDiffReporter +{ + public static final BeyondCompareImageReporter INSTANCE = new BeyondCompareImageReporter(); + static final String DIFF_PROGRAM = "/usr/local/bin/bcompare"; + static final String MESSAGE = MessageFormat.format( + "Unable to find Beyond Compare at {0}", + DIFF_PROGRAM); + + public BeyondCompareImageReporter() { + super(DIFF_PROGRAM, STANDARD_ARGUMENTS, MESSAGE, IMAGE_FILE_EXTENSIONS); + } +} diff --git a/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java new file mode 100644 index 0000000..294d949 --- /dev/null +++ b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java @@ -0,0 +1,18 @@ +package org.teachingextensions.approvals.lite.reporters.macosx; + +import org.teachingextensions.approvals.lite.reporters.GenericDiffReporter; + +import java.text.MessageFormat; + +public class BeyondCompareReporter extends GenericDiffReporter +{ + public static final BeyondCompareReporter INSTANCE = new BeyondCompareReporter(); + static final String DIFF_PROGRAM = "/usr/local/bin/bcompare"; + static final String MESSAGE = MessageFormat.format( + "Unable to find Beyond Compare at {0}", DIFF_PROGRAM); + public BeyondCompareReporter() + { + super(DIFF_PROGRAM, MESSAGE); + } +} + diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/DiffMergeReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/DiffMergeReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/macosx/DiffMergeReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/DiffMergeReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/KaleidoscopeDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/KaleidoscopeDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/macosx/KaleidoscopeDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/KaleidoscopeDiffReporter.java diff --git a/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java new file mode 100644 index 0000000..d3542a5 --- /dev/null +++ b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java @@ -0,0 +1,13 @@ +package org.teachingextensions.approvals.lite.reporters.macosx; + +import org.teachingextensions.approvals.lite.reporters.FirstWorkingReporter; + +public class MacDiffReporter extends FirstWorkingReporter +{ + public static final MacDiffReporter INSTANCE = new MacDiffReporter(); + public MacDiffReporter() + { + super(DiffMergeReporter.INSTANCE, KaleidoscopeDiffReporter.INSTANCE, P4MergeReporter.INSTANCE, + TkDiffReporter.INSTANCE, BeyondCompareReporter.INSTANCE, BeyondCompareImageReporter.INSTANCE); + } +} diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/P4MergeReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/P4MergeReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/macosx/P4MergeReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/P4MergeReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/TkDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/TkDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/macosx/TkDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/macosx/TkDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/BeyondCompareReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/BeyondCompareReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/BeyondCompareReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/BeyondCompareReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseImageDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseImageDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseImageDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseImageDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseTextDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseTextDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/TortoiseTextDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/TortoiseTextDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/WinMergeReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/WinMergeReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/WinMergeReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/WinMergeReporter.java diff --git a/src/org/teachingextensions/approvals/lite/reporters/windows/WindowsDiffReporter.java b/src/main/java/org/teachingextensions/approvals/lite/reporters/windows/WindowsDiffReporter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/reporters/windows/WindowsDiffReporter.java rename to src/main/java/org/teachingextensions/approvals/lite/reporters/windows/WindowsDiffReporter.java diff --git a/src/org/teachingextensions/approvals/lite/util/ArrayUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/ArrayUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ArrayUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ArrayUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/Asserts.java b/src/main/java/org/teachingextensions/approvals/lite/util/Asserts.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/Asserts.java rename to src/main/java/org/teachingextensions/approvals/lite/util/Asserts.java diff --git a/src/org/teachingextensions/approvals/lite/util/ClassUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/ClassUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ClassUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ClassUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/DateDifference.java b/src/main/java/org/teachingextensions/approvals/lite/util/DateDifference.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/DateDifference.java rename to src/main/java/org/teachingextensions/approvals/lite/util/DateDifference.java diff --git a/src/org/teachingextensions/approvals/lite/util/DateUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/DateUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/DateUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/DateUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/FormattedException.java b/src/main/java/org/teachingextensions/approvals/lite/util/FormattedException.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/FormattedException.java rename to src/main/java/org/teachingextensions/approvals/lite/util/FormattedException.java diff --git a/src/org/teachingextensions/approvals/lite/util/FrameCloser.java b/src/main/java/org/teachingextensions/approvals/lite/util/FrameCloser.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/FrameCloser.java rename to src/main/java/org/teachingextensions/approvals/lite/util/FrameCloser.java diff --git a/src/org/teachingextensions/approvals/lite/util/LambdaThreadLauncher.java b/src/main/java/org/teachingextensions/approvals/lite/util/LambdaThreadLauncher.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/LambdaThreadLauncher.java rename to src/main/java/org/teachingextensions/approvals/lite/util/LambdaThreadLauncher.java diff --git a/src/org/teachingextensions/approvals/lite/util/MySystem.java b/src/main/java/org/teachingextensions/approvals/lite/util/MySystem.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/MySystem.java rename to src/main/java/org/teachingextensions/approvals/lite/util/MySystem.java diff --git a/src/org/teachingextensions/approvals/lite/util/NotImplementedException.java b/src/main/java/org/teachingextensions/approvals/lite/util/NotImplementedException.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/NotImplementedException.java rename to src/main/java/org/teachingextensions/approvals/lite/util/NotImplementedException.java diff --git a/src/org/teachingextensions/approvals/lite/util/NumberUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/NumberUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/NumberUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/NumberUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/ObjectUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/ObjectUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ObjectUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ObjectUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/ParserCommons.java b/src/main/java/org/teachingextensions/approvals/lite/util/ParserCommons.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ParserCommons.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ParserCommons.java diff --git a/src/org/teachingextensions/approvals/lite/util/SearchingFileFilter.java b/src/main/java/org/teachingextensions/approvals/lite/util/SearchingFileFilter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/SearchingFileFilter.java rename to src/main/java/org/teachingextensions/approvals/lite/util/SearchingFileFilter.java diff --git a/src/org/teachingextensions/approvals/lite/util/StackTraceReflectionResult.java b/src/main/java/org/teachingextensions/approvals/lite/util/StackTraceReflectionResult.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/StackTraceReflectionResult.java rename to src/main/java/org/teachingextensions/approvals/lite/util/StackTraceReflectionResult.java diff --git a/src/main/java/org/teachingextensions/approvals/lite/util/StringUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/StringUtils.java new file mode 100644 index 0000000..1934d6f --- /dev/null +++ b/src/main/java/org/teachingextensions/approvals/lite/util/StringUtils.java @@ -0,0 +1,77 @@ +package org.teachingextensions.approvals.lite.util; + +/** + * A static class of convenience functions for database access + */ +public final class StringUtils { + public static final String NEW_LINE = System.getProperty("line.separator"); + + private StringUtils() { + } + + public static String stripNonNumeric(String number, boolean allowDecimal, boolean allowNegative) { + boolean allowExponential = allowDecimal; + boolean afterE = false; + if (number == null) { + return ""; + } + StringBuilder result = new StringBuilder(); + for (int i = 0; i < number.length(); i++) { + char c = number.charAt(i); + switch (c) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + result.append(c); + afterE = false; + break; + case '-': + if (allowNegative || afterE) { + result.append(c); + allowNegative = false; + } + break; + case '.': + if (allowDecimal) { + result.append(c); + allowDecimal = false; + } + afterE = false; + break; + case 'e': + case 'E': + if (allowExponential) { + result.append(c); + allowExponential = false; + } + afterE = true; + break; + default: + break; + } + } + return result.toString(); + } + + /** + * A convenience function to check that a String has at least 1 character. + * + * @param string + * The string in question + * @return true if Non Zero. + */ + public static boolean isNonZero(String string) { + return string != null && 0 < string.trim().length(); + } + + public static boolean isEmpty(String string) { + return !isNonZero(string); + } +} diff --git a/src/org/teachingextensions/approvals/lite/util/SystemUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/SystemUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/SystemUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/SystemUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/TestUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/TestUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/TestUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/TestUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/ThreadLauncher.java b/src/main/java/org/teachingextensions/approvals/lite/util/ThreadLauncher.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ThreadLauncher.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ThreadLauncher.java diff --git a/src/org/teachingextensions/approvals/lite/util/ThreadUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/ThreadUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/ThreadUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/ThreadUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/Tuple.java b/src/main/java/org/teachingextensions/approvals/lite/util/Tuple.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/Tuple.java rename to src/main/java/org/teachingextensions/approvals/lite/util/Tuple.java diff --git a/src/org/teachingextensions/approvals/lite/util/WindowUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/WindowUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/WindowUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/WindowUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/io/FileUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/io/FileUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/io/FileUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/io/FileUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/io/SimpleDirectoryFilter.java b/src/main/java/org/teachingextensions/approvals/lite/util/io/SimpleDirectoryFilter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/io/SimpleDirectoryFilter.java rename to src/main/java/org/teachingextensions/approvals/lite/util/io/SimpleDirectoryFilter.java diff --git a/src/org/teachingextensions/approvals/lite/util/io/SimpleFileFilter.java b/src/main/java/org/teachingextensions/approvals/lite/util/io/SimpleFileFilter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/io/SimpleFileFilter.java rename to src/main/java/org/teachingextensions/approvals/lite/util/io/SimpleFileFilter.java diff --git a/src/org/teachingextensions/approvals/lite/util/io/StackElementSelector.java b/src/main/java/org/teachingextensions/approvals/lite/util/io/StackElementSelector.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/io/StackElementSelector.java rename to src/main/java/org/teachingextensions/approvals/lite/util/io/StackElementSelector.java diff --git a/src/org/teachingextensions/approvals/lite/util/io/ZipUtils.java b/src/main/java/org/teachingextensions/approvals/lite/util/io/ZipUtils.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/io/ZipUtils.java rename to src/main/java/org/teachingextensions/approvals/lite/util/io/ZipUtils.java diff --git a/src/org/teachingextensions/approvals/lite/util/lambda/Action0.java b/src/main/java/org/teachingextensions/approvals/lite/util/lambda/Action0.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/lambda/Action0.java rename to src/main/java/org/teachingextensions/approvals/lite/util/lambda/Action0.java diff --git a/src/org/teachingextensions/approvals/lite/util/lambda/Function0.java b/src/main/java/org/teachingextensions/approvals/lite/util/lambda/Function0.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/lambda/Function0.java rename to src/main/java/org/teachingextensions/approvals/lite/util/lambda/Function0.java diff --git a/src/org/teachingextensions/approvals/lite/util/lambda/Function1.java b/src/main/java/org/teachingextensions/approvals/lite/util/lambda/Function1.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/lambda/Function1.java rename to src/main/java/org/teachingextensions/approvals/lite/util/lambda/Function1.java diff --git a/src/org/teachingextensions/approvals/lite/util/lambda/Query.java b/src/main/java/org/teachingextensions/approvals/lite/util/lambda/Query.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/lambda/Query.java rename to src/main/java/org/teachingextensions/approvals/lite/util/lambda/Query.java diff --git a/src/org/teachingextensions/approvals/lite/util/persistence/Saver.java b/src/main/java/org/teachingextensions/approvals/lite/util/persistence/Saver.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/persistence/Saver.java rename to src/main/java/org/teachingextensions/approvals/lite/util/persistence/Saver.java diff --git a/src/org/teachingextensions/approvals/lite/util/persistence/SavingException.java b/src/main/java/org/teachingextensions/approvals/lite/util/persistence/SavingException.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/persistence/SavingException.java rename to src/main/java/org/teachingextensions/approvals/lite/util/persistence/SavingException.java diff --git a/src/org/teachingextensions/approvals/lite/util/servlets/InvokerServlet.java b/src/main/java/org/teachingextensions/approvals/lite/util/servlets/InvokerServlet.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/servlets/InvokerServlet.java rename to src/main/java/org/teachingextensions/approvals/lite/util/servlets/InvokerServlet.java diff --git a/src/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java b/src/main/java/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java similarity index 71% rename from src/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java rename to src/main/java/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java index 73238e6..34664f6 100644 --- a/src/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java +++ b/src/main/java/org/teachingextensions/approvals/lite/util/servlets/ValidationError.java @@ -1,10 +1,10 @@ package org.teachingextensions.approvals.lite.util.servlets; +import org.teachingextensions.approvals.lite.util.StringUtils; + import java.util.HashMap; import java.util.HashSet; -import org.teachingextensions.approvals.lite.util.StringUtils; - public class ValidationError extends RuntimeException { private static final long serialVersionUID = 7940285202708976073L; private HashMap errors = new HashMap<>(); @@ -45,29 +45,6 @@ public void setError(String assertion, boolean isError, } } - public ValidationError add(String prefix, int index, ValidationError error) { - return add(getPrefixForIndex(prefix, index), error); - } - - public static String getPrefixForIndex(String prefix, int index) { - return prefix + "[" + index + "]"; - } - - public ValidationError add(String prefix, ValidationError error) { - prefix = StringUtils.isEmpty(prefix) ? "" : (prefix + "."); - String[] assertions = StringUtils.toArray(error.assertions); - - for (String assertion : assertions) { - this.assertions.add(prefix + assertion); - } - - for (String key : error.errors.keySet()) { - errors.put(prefix + key, error.errors.get(key)); - } - - return this; - } - public boolean isOk() { return errors.size() == 0; } @@ -83,4 +60,4 @@ public int size() { return errors.size(); } -} \ No newline at end of file +} diff --git a/src/org/teachingextensions/approvals/lite/util/velocity/ContextAware.java b/src/main/java/org/teachingextensions/approvals/lite/util/velocity/ContextAware.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/velocity/ContextAware.java rename to src/main/java/org/teachingextensions/approvals/lite/util/velocity/ContextAware.java diff --git a/src/org/teachingextensions/approvals/lite/util/velocity/TestableUberspect.java b/src/main/java/org/teachingextensions/approvals/lite/util/velocity/TestableUberspect.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/velocity/TestableUberspect.java rename to src/main/java/org/teachingextensions/approvals/lite/util/velocity/TestableUberspect.java diff --git a/src/org/teachingextensions/approvals/lite/util/velocity/VelocityParsingError.java b/src/main/java/org/teachingextensions/approvals/lite/util/velocity/VelocityParsingError.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/util/velocity/VelocityParsingError.java rename to src/main/java/org/teachingextensions/approvals/lite/util/velocity/VelocityParsingError.java diff --git a/src/org/teachingextensions/approvals/lite/writers/ApprovalTextWriter.java b/src/main/java/org/teachingextensions/approvals/lite/writers/ApprovalTextWriter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/writers/ApprovalTextWriter.java rename to src/main/java/org/teachingextensions/approvals/lite/writers/ApprovalTextWriter.java diff --git a/src/org/teachingextensions/approvals/lite/writers/ComponentApprovalWriter.java b/src/main/java/org/teachingextensions/approvals/lite/writers/ComponentApprovalWriter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/writers/ComponentApprovalWriter.java rename to src/main/java/org/teachingextensions/approvals/lite/writers/ComponentApprovalWriter.java diff --git a/src/org/teachingextensions/approvals/lite/writers/ImageApprovalWriter.java b/src/main/java/org/teachingextensions/approvals/lite/writers/ImageApprovalWriter.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/writers/ImageApprovalWriter.java rename to src/main/java/org/teachingextensions/approvals/lite/writers/ImageApprovalWriter.java diff --git a/src/org/teachingextensions/approvals/lite/writers/Writer.java b/src/main/java/org/teachingextensions/approvals/lite/writers/Writer.java similarity index 100% rename from src/org/teachingextensions/approvals/lite/writers/Writer.java rename to src/main/java/org/teachingextensions/approvals/lite/writers/Writer.java diff --git a/src/org/teachingextensions/logo/AStarEstimator.java b/src/main/java/org/teachingextensions/logo/AStarEstimator.java similarity index 100% rename from src/org/teachingextensions/logo/AStarEstimator.java rename to src/main/java/org/teachingextensions/logo/AStarEstimator.java diff --git a/src/org/teachingextensions/logo/AStarPlayer.java b/src/main/java/org/teachingextensions/logo/AStarPlayer.java similarity index 100% rename from src/org/teachingextensions/logo/AStarPlayer.java rename to src/main/java/org/teachingextensions/logo/AStarPlayer.java diff --git a/src/main/java/org/teachingextensions/logo/BreadthFirstPlayer.java b/src/main/java/org/teachingextensions/logo/BreadthFirstPlayer.java new file mode 100644 index 0000000..bd529b3 --- /dev/null +++ b/src/main/java/org/teachingextensions/logo/BreadthFirstPlayer.java @@ -0,0 +1,14 @@ +package org.teachingextensions.logo; + +import java.util.ArrayDeque; + +/** + * A player who solves puzzles using breadth-first search. + */ +public class BreadthFirstPlayer extends PuzzlePlayer { + + public BreadthFirstPlayer(Puzzle puzzle) { + super(puzzle, new ArrayDeque()); + } + +} diff --git a/src/org/teachingextensions/logo/ColorWheel.java b/src/main/java/org/teachingextensions/logo/ColorWheel.java similarity index 53% rename from src/org/teachingextensions/logo/ColorWheel.java rename to src/main/java/org/teachingextensions/logo/ColorWheel.java index 9519c83..3422c29 100644 --- a/src/org/teachingextensions/logo/ColorWheel.java +++ b/src/main/java/org/teachingextensions/logo/ColorWheel.java @@ -3,28 +3,28 @@ import java.awt.Color; /** - * - * ColorWheel is a place to store a color palette.
+ * A painter's palette + * ColorWheel is a place to store a color palette.
* Example: If you have a palette of - * blue, - * red, - * and purple
- * and then used it to print out the numbers, you would get
- * 1 - * 2 - * 3 - * 4 - * 5 - * 6 - * 7 - * 8 - * 9 + * blue, + * red, + * and purple
+ * and then used it to print out the numbers, you would get
+ * 1 + * 2 + * 3 + * 4 + * 5 + * 6 + * 7 + * 8 + * 9 */ public class ColorWheel { - private static Wheel wheel = new Wheel(); + private static Wheel wheel = new Wheel<>(); /** - * This method adds a color to the ColorWheel.
+ * This method adds a color to the ColorWheel.
* Example: {@code ColorWheel.addColor(PenColors.Reds.Red);} * @param color * the color to add to the wheel @@ -34,7 +34,7 @@ public static void addColor(Color color) wheel.add(color); } /** - * This method returns the next color of the ColorWheel.
+ * This method returns the next color of the ColorWheel.
* Example: {@code Color color = ColorWheel.getNextColor();} * * @return the next color of the ColorWheel @@ -44,7 +44,7 @@ public static Color getNextColor() return wheel.next(); } /** - * This method returns the a random color from the options on the ColorWheel.
+ * This method returns the a random color from the options on the ColorWheel.
* Example: {@code Color color = ColorWheel.getNextColor();} * * @return A random color from the ColorWheel diff --git a/src/org/teachingextensions/logo/CompositeStroke.java b/src/main/java/org/teachingextensions/logo/CompositeStroke.java similarity index 100% rename from src/org/teachingextensions/logo/CompositeStroke.java rename to src/main/java/org/teachingextensions/logo/CompositeStroke.java diff --git a/src/org/teachingextensions/logo/ImageBackground.java b/src/main/java/org/teachingextensions/logo/ImageBackground.java similarity index 61% rename from src/org/teachingextensions/logo/ImageBackground.java rename to src/main/java/org/teachingextensions/logo/ImageBackground.java index fb44a20..9fa6c4d 100644 --- a/src/org/teachingextensions/logo/ImageBackground.java +++ b/src/main/java/org/teachingextensions/logo/ImageBackground.java @@ -2,7 +2,6 @@ import java.awt.Graphics2D; import java.awt.Image; -import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.net.URL; @@ -11,27 +10,22 @@ import org.teachingextensions.approvals.lite.util.ObjectUtils; -public class ImageBackground implements Paintable -{ +public class ImageBackground implements Paintable { private BufferedImage image; - public ImageBackground(String uri) - { - try - { + + public ImageBackground(String uri) { + try { URL url = new URL(uri); image = ImageIO.read(url); - } - catch (Throwable e) - { + } catch (Throwable e) { throw ObjectUtils.throwAsError(e); } } + @Override - public void paint(Graphics2D g, JPanel caller) - { - Rectangle bounds = g.getClipBounds(); + public void paint(Graphics2D g, JPanel caller) { Image img = image; - g.drawImage(img, 0, 0, caller.getWidth(), caller.getHeight(), 0, 0, img.getWidth(null), img.getHeight(null), - null); + g.drawImage(img, 0, 0, caller.getWidth(), caller.getHeight(), 0, 0, + img.getWidth(null), img.getHeight(null), null); } } diff --git a/src/org/teachingextensions/logo/LineSegment.java b/src/main/java/org/teachingextensions/logo/LineSegment.java similarity index 100% rename from src/org/teachingextensions/logo/LineSegment.java rename to src/main/java/org/teachingextensions/logo/LineSegment.java diff --git a/src/main/java/org/teachingextensions/logo/MultiTurtlePanel.java b/src/main/java/org/teachingextensions/logo/MultiTurtlePanel.java new file mode 100644 index 0000000..3ca1fe6 --- /dev/null +++ b/src/main/java/org/teachingextensions/logo/MultiTurtlePanel.java @@ -0,0 +1,112 @@ +package org.teachingextensions.logo; + +import java.awt.BasicStroke; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.geom.AffineTransform; +import java.awt.geom.Line2D; +import java.util.ArrayList; +import java.util.List; + +import org.teachingextensions.approvals.lite.util.ObjectUtils; +import org.teachingextensions.logo.Turtle.Animals; +import org.teachingextensions.windows.ProgramWindow; + +/** + * Use this window when you want to put more than one turtle on the same window + */ +public class MultiTurtlePanel extends TurtlePanel +{ + private static final long serialVersionUID = 1810849469483511849L; + private List turtles = new ArrayList(); + private Image image; + private Animals animal = Animals.Turtle; + public MultiTurtlePanel() + { + super("So Many Turtles"); + this.image = loadAnimal(); + } + /** + * Adds a turtle instance to a window + *

Example: {@code multiTurtlePanel.addTurtle(myTurtle)}

+ * + * @param turtle + * A turtle instance + */ + public void addTurtle(Turtle turtle) + { + if (turtle == null) { return; } + this.turtles.add(turtle); + turtle.setPanel(this); + } + @Override + public void paint(Graphics g) + { + Graphics2D g2d = ProgramWindow.configureGraphics2D(g); + paintLines(g2d); + paintTurtle(g2d); + g2d.dispose(); + } + @Override + public synchronized Image getImage() + { + return image; + } + /** + * Sets the Animal + *

Example: {@code multiTurtlePanel.setAnimal(animal)}

+ * + * @see Animals + */ + @Override + public synchronized void setAnimal(Animals animal) + { + this.animal = animal; + this.image = loadAnimal(); + } + private Image loadAnimal() + { + return ObjectUtils.loadImage(MultiTurtlePanel.class, this.animal + ".png"); + } + private void paintLines(Graphics2D g2d) + { + for (Turtle turtle : turtles) + { + paintTrail(g2d, turtle.getTrail()); + } + } + private void paintTrail(Graphics2D g2d, LineSegment[] trail) + { + for (LineSegment l : trail) + { + g2d.setColor(l.getColor()); + g2d.setStroke(new BasicStroke(l.getWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); + g2d.draw(new Line2D.Double(l.getStart().x, l.getStart().y, l.getEnd().x, l.getEnd().y)); + } + } + private void paintTurtle(Graphics2D g) + { + for (Turtle turtle : turtles) + { + if (turtle.isHidden()) + { + continue; + } + Image image = getImage(); + int xCenter = image.getWidth(null) / 2; + int yCenter = image.getHeight(null) / 2; + int x = turtle.getX() - xCenter; + int y = turtle.getY() - yCenter; + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(turtle.getHeadingInDegrees()), + xCenter, yCenter); + AffineTransform move = AffineTransform.getTranslateInstance(x, y); + move.concatenate(rotate); + g.drawImage(image, move, null); + } + } + public int getTurtleCount() + { + return this.turtles.size(); + } +} diff --git a/src/org/teachingextensions/logo/Paintable.java b/src/main/java/org/teachingextensions/logo/Paintable.java similarity index 100% rename from src/org/teachingextensions/logo/Paintable.java rename to src/main/java/org/teachingextensions/logo/Paintable.java diff --git a/src/org/teachingextensions/logo/PenColors.java b/src/main/java/org/teachingextensions/logo/PenColors.java similarity index 52% rename from src/org/teachingextensions/logo/PenColors.java rename to src/main/java/org/teachingextensions/logo/PenColors.java index 517a5d7..816fd2d 100644 --- a/src/org/teachingextensions/logo/PenColors.java +++ b/src/main/java/org/teachingextensions/logo/PenColors.java @@ -4,10 +4,10 @@ import java.util.Random; /** - * + * A color wheel * Every pen color under the - * rainbow, + * rainbow, * and different ways to get them. */ public class PenColors @@ -15,8 +15,8 @@ public class PenColors public static class Blues { /** - * The color Navy - * + * The color Navy + *
* * * @@ -24,8 +24,8 @@ public static class Blues **/ public static final Color Navy = Color.decode("#000080"); /** - * The color DarkBlue - *
 
+ * The color DarkBlue + *
* * * @@ -33,8 +33,8 @@ public static class Blues **/ public static final Color DarkBlue = Color.decode("#00008B"); /** - * The color MidnightBlue - *
 
+ * The color MidnightBlue + *
* * * @@ -42,8 +42,8 @@ public static class Blues **/ public static final Color MidnightBlue = Color.decode("#191970"); /** - * The color MediumBlue - *
 
+ * The color MediumBlue + *
* * * @@ -51,8 +51,8 @@ public static class Blues **/ public static final Color MediumBlue = Color.decode("#0000CD"); /** - * The color Blue - *
 
+ * The color Blue + *
* * * @@ -60,8 +60,8 @@ public static class Blues **/ public static final Color Blue = Color.decode("#0000FF"); /** - * The color Teal - *
 
+ * The color Teal + *
* * * @@ -69,8 +69,8 @@ public static class Blues **/ public static final Color Teal = Color.decode("#008080"); /** - * The color DarkSlateBlue - *
 
+ * The color DarkSlateBlue + *
* * * @@ -78,8 +78,8 @@ public static class Blues **/ public static final Color DarkSlateBlue = Color.decode("#483D8B"); /** - * The color DarkCyan - *
 
+ * The color DarkCyan + *
* * * @@ -87,8 +87,8 @@ public static class Blues **/ public static final Color DarkCyan = Color.decode("#008B8B"); /** - * The color SteelBlue - *
 
+ * The color SteelBlue + *
* * * @@ -96,8 +96,8 @@ public static class Blues **/ public static final Color SteelBlue = Color.decode("#4682B4"); /** - * The color RoyalBlue - *
 
+ * The color RoyalBlue + *
* * * @@ -105,8 +105,8 @@ public static class Blues **/ public static final Color RoyalBlue = Color.decode("#4169E1"); /** - * The color SlateBlue - *
 
+ * The color SlateBlue + *
* * * @@ -114,8 +114,8 @@ public static class Blues **/ public static final Color SlateBlue = Color.decode("#6A5ACD"); /** - * The color CadetBlue - *
 
+ * The color CadetBlue + *
* * * @@ -123,8 +123,8 @@ public static class Blues **/ public static final Color CadetBlue = Color.decode("#5F9EA0"); /** - * The color DarkTurquoise - *
 
+ * The color DarkTurquoise + *
* * * @@ -132,8 +132,8 @@ public static class Blues **/ public static final Color DarkTurquoise = Color.decode("#00CED1"); /** - * The color DodgerBlue - *
 
+ * The color DodgerBlue + *
* * * @@ -141,8 +141,8 @@ public static class Blues **/ public static final Color DodgerBlue = Color.decode("#1E90FF"); /** - * The color DeepSkyBlue - *
 
+ * The color DeepSkyBlue + *
* * * @@ -150,8 +150,8 @@ public static class Blues **/ public static final Color DeepSkyBlue = Color.decode("#00BFFF"); /** - * The color MediumSlateBlue - *
 
+ * The color MediumSlateBlue + *
* * * @@ -159,8 +159,8 @@ public static class Blues **/ public static final Color MediumSlateBlue = Color.decode("#7B68EE"); /** - * The color MediumTurquoise - *
 
+ * The color MediumTurquoise + *
* * * @@ -168,8 +168,8 @@ public static class Blues **/ public static final Color MediumTurquoise = Color.decode("#48D1CC"); /** - * The color CornflowerBlue - *
 
+ * The color CornflowerBlue + *
* * * @@ -177,8 +177,8 @@ public static class Blues **/ public static final Color CornflowerBlue = Color.decode("#6495ED"); /** - * The color Turquoise - *
 
+ * The color Turquoise + *
* * * @@ -186,8 +186,8 @@ public static class Blues **/ public static final Color Turquoise = Color.decode("#40E0D0"); /** - * The color Aqua - *
 
+ * The color Aqua + *
* * * @@ -195,8 +195,8 @@ public static class Blues **/ public static final Color Aqua = Color.decode("#00FFFF"); /** - * The color Cyan - *
 
+ * The color Cyan + *
* * * @@ -204,8 +204,8 @@ public static class Blues **/ public static final Color Cyan = Color.decode("#00FFFF"); /** - * The color SkyBlue - *
 
+ * The color SkyBlue + *
* * * @@ -213,8 +213,8 @@ public static class Blues **/ public static final Color SkyBlue = Color.decode("#87CEEB"); /** - * The color LightSkyBlue - *
 
+ * The color LightSkyBlue + *
* * * @@ -222,8 +222,8 @@ public static class Blues **/ public static final Color LightSkyBlue = Color.decode("#87CEFA"); /** - * The color Aquamarine - *
 
+ * The color Aquamarine + *
* * * @@ -231,8 +231,8 @@ public static class Blues **/ public static final Color Aquamarine = Color.decode("#7FFFD4"); /** - * The color LightSteelBlue - *
 
+ * The color LightSteelBlue + *
* * * @@ -240,8 +240,8 @@ public static class Blues **/ public static final Color LightSteelBlue = Color.decode("#B0C4DE"); /** - * The color LightBlue - *
 
+ * The color LightBlue + *
* * * @@ -249,8 +249,8 @@ public static class Blues **/ public static final Color LightBlue = Color.decode("#ADD8E6"); /** - * The color PowderBlue - *
 
+ * The color PowderBlue + *
* * * @@ -258,8 +258,8 @@ public static class Blues **/ public static final Color PowderBlue = Color.decode("#B0E0E6"); /** - * The color PaleTurquoise - *
 
+ * The color PaleTurquoise + *
* * * @@ -267,8 +267,8 @@ public static class Blues **/ public static final Color PaleTurquoise = Color.decode("#AFEEEE"); /** - * The color LightCyan - *
 
+ * The color LightCyan + *
* * * @@ -276,8 +276,8 @@ public static class Blues **/ public static final Color LightCyan = Color.decode("#E0FFFF"); /** - * The color AliceBlue - *
 
+ * The color AliceBlue + *
* * * @@ -285,8 +285,8 @@ public static class Blues **/ public static final Color AliceBlue = Color.decode("#F0F8FF"); /** - * The color Azure - *
 
+ * The color Azure + *
* * * @@ -297,8 +297,8 @@ public static class Blues public static class Browns { /** - * The color Maroon - *
 
+ * The color Maroon + *
* * * @@ -306,8 +306,8 @@ public static class Browns **/ public static final Color Maroon = Color.decode("#800000"); /** - * The color SaddleBrown - *
 
+ * The color SaddleBrown + *
* * * @@ -315,8 +315,8 @@ public static class Browns **/ public static final Color SaddleBrown = Color.decode("#8B4513"); /** - * The color Brown - *
 
+ * The color Brown + *
* * * @@ -324,8 +324,8 @@ public static class Browns **/ public static final Color Brown = Color.decode("#A52A2A"); /** - * The color Sienna - *
 
+ * The color Sienna + *
* * * @@ -333,8 +333,8 @@ public static class Browns **/ public static final Color Sienna = Color.decode("#A0522D"); /** - * The color DarkGoldenrod - *
 
+ * The color DarkGoldenrod + *
* * * @@ -342,8 +342,8 @@ public static class Browns **/ public static final Color DarkGoldenrod = Color.decode("#B8860B"); /** - * The color Chocolate - *
 
+ * The color Chocolate + *
* * * @@ -351,8 +351,8 @@ public static class Browns **/ public static final Color Chocolate = Color.decode("#D2691E"); /** - * The color Peru - *
 
+ * The color Peru + *
* * * @@ -360,8 +360,8 @@ public static class Browns **/ public static final Color Peru = Color.decode("#CD853F"); /** - * The color Goldenrod - *
 
+ * The color Goldenrod + *
* * * @@ -369,8 +369,8 @@ public static class Browns **/ public static final Color Goldenrod = Color.decode("#DAA520"); /** - * The color RosyBrown - *
 
+ * The color RosyBrown + *
* * * @@ -378,8 +378,8 @@ public static class Browns **/ public static final Color RosyBrown = Color.decode("#BC8F8F"); /** - * The color SandyBrown - *
 
+ * The color SandyBrown + *
* * * @@ -387,8 +387,8 @@ public static class Browns **/ public static final Color SandyBrown = Color.decode("#F4A460"); /** - * The color Tan - *
 
+ * The color Tan + *
* * * @@ -396,8 +396,8 @@ public static class Browns **/ public static final Color Tan = Color.decode("#D2B48C"); /** - * The color BurlyWood - *
 
+ * The color BurlyWood + *
* * * @@ -405,8 +405,8 @@ public static class Browns **/ public static final Color BurlyWood = Color.decode("#DEB887"); /** - * The color Wheat - *
 
+ * The color Wheat + *
* * * @@ -414,8 +414,8 @@ public static class Browns **/ public static final Color Wheat = Color.decode("#F5DEB3"); /** - * The color NavajoWhite - *
 
+ * The color NavajoWhite + *
* * * @@ -423,8 +423,8 @@ public static class Browns **/ public static final Color NavajoWhite = Color.decode("#FFDEAD"); /** - * The color Bisque - *
 
+ * The color Bisque + *
* * * @@ -432,8 +432,8 @@ public static class Browns **/ public static final Color Bisque = Color.decode("#FFE4C4"); /** - * The color BlanchedAlmond - *
 
+ * The color BlanchedAlmond + *
* * * @@ -441,8 +441,8 @@ public static class Browns **/ public static final Color BlanchedAlmond = Color.decode("#FFEBCD"); /** - * The color Cornsilk - *
 
+ * The color Cornsilk + *
* * * @@ -453,8 +453,8 @@ public static class Browns public static class Grays { /** - * The color Black - *
 
+ * The color Black + *
* * * @@ -462,8 +462,8 @@ public static class Grays **/ public static final Color Black = Color.decode("#000000"); /** - * The color DarkSlateGray - *
 
+ * The color DarkSlateGray + *
* * * @@ -471,8 +471,8 @@ public static class Grays **/ public static final Color DarkSlateGray = Color.decode("#2F4F4F"); /** - * The color DimGray - *
 
+ * The color DimGray + *
* * * @@ -480,8 +480,8 @@ public static class Grays **/ public static final Color DimGray = Color.decode("#696969"); /** - * The color Gray - *
 
+ * The color Gray + *
* * * @@ -489,8 +489,8 @@ public static class Grays **/ public static final Color Gray = Color.decode("#808080"); /** - * The color SlateGray - *
 
+ * The color SlateGray + *
* * * @@ -498,8 +498,8 @@ public static class Grays **/ public static final Color SlateGray = Color.decode("#708090"); /** - * The color LightSlateGray - *
 
+ * The color LightSlateGray + *
* * * @@ -507,8 +507,8 @@ public static class Grays **/ public static final Color LightSlateGray = Color.decode("#778899"); /** - * The color DarkGray - *
 
+ * The color DarkGray + *
* * * @@ -516,8 +516,8 @@ public static class Grays **/ public static final Color DarkGray = Color.decode("#A9A9A9"); /** - * The color Silver - *
 
+ * The color Silver + *
* * * @@ -525,8 +525,8 @@ public static class Grays **/ public static final Color Silver = Color.decode("#C0C0C0"); /** - * The color LightGray - *
 
+ * The color LightGray + *
* * * @@ -534,8 +534,8 @@ public static class Grays **/ public static final Color LightGray = Color.decode("#D3D3D3"); /** - * The color Gainsboro - *
 
+ * The color Gainsboro + *
* * * @@ -546,8 +546,8 @@ public static class Grays public static class Greens { /** - * The color DarkGreen - *
 
+ * The color DarkGreen + *
* * * @@ -555,8 +555,8 @@ public static class Greens **/ public static final Color DarkGreen = Color.decode("#006400"); /** - * The color Green - *
 
+ * The color Green + *
* * * @@ -564,8 +564,8 @@ public static class Greens **/ public static final Color Green = Color.decode("#008000"); /** - * The color ForestGreen - *
 
+ * The color ForestGreen + *
* * * @@ -573,8 +573,8 @@ public static class Greens **/ public static final Color ForestGreen = Color.decode("#228B22"); /** - * The color DarkOliveGreen - *
 
+ * The color DarkOliveGreen + *
* * * @@ -582,8 +582,8 @@ public static class Greens **/ public static final Color DarkOliveGreen = Color.decode("#556B2F"); /** - * The color Lime - *
 
+ * The color Lime + *
* * * @@ -591,8 +591,8 @@ public static class Greens **/ public static final Color Lime = Color.decode("#00FF00"); /** - * The color Olive - *
 
+ * The color Olive + *
* * * @@ -600,8 +600,8 @@ public static class Greens **/ public static final Color Olive = Color.decode("#808000"); /** - * The color Teal - *
 
+ * The color Teal + *
* * * @@ -609,8 +609,8 @@ public static class Greens **/ public static final Color Teal = Color.decode("#008080"); /** - * The color SeaGreen - *
 
+ * The color SeaGreen + *
* * * @@ -618,8 +618,8 @@ public static class Greens **/ public static final Color SeaGreen = Color.decode("#2E8B57"); /** - * The color DarkCyan - *
 
+ * The color DarkCyan + *
* * * @@ -627,8 +627,8 @@ public static class Greens **/ public static final Color DarkCyan = Color.decode("#008B8B"); /** - * The color OliveDrab - *
 
+ * The color OliveDrab + *
* * * @@ -636,8 +636,8 @@ public static class Greens **/ public static final Color OliveDrab = Color.decode("#6B8E23"); /** - * The color LimeGreen - *
 
+ * The color LimeGreen + *
* * * @@ -645,8 +645,8 @@ public static class Greens **/ public static final Color LimeGreen = Color.decode("#32CD32"); /** - * The color MediumSeaGreen - *
 
+ * The color MediumSeaGreen + *
* * * @@ -654,8 +654,8 @@ public static class Greens **/ public static final Color MediumSeaGreen = Color.decode("#3CB371"); /** - * The color LawnGreen - *
 
+ * The color LawnGreen + *
* * * @@ -663,8 +663,8 @@ public static class Greens **/ public static final Color LawnGreen = Color.decode("#7CFC00"); /** - * The color LightSeaGreen - *
 
+ * The color LightSeaGreen + *
* * * @@ -672,8 +672,8 @@ public static class Greens **/ public static final Color LightSeaGreen = Color.decode("#20B2AA"); /** - * The color Chartreuse - *
 
+ * The color Chartreuse + *
* * * @@ -681,8 +681,8 @@ public static class Greens **/ public static final Color Chartreuse = Color.decode("#7FFF00"); /** - * The color SpringGreen - *
 
+ * The color SpringGreen + *
* * * @@ -690,8 +690,8 @@ public static class Greens **/ public static final Color SpringGreen = Color.decode("#00FF7F"); /** - * The color MediumSpringGreen - *
 
+ * The color MediumSpringGreen + *
* * * @@ -699,8 +699,8 @@ public static class Greens **/ public static final Color MediumSpringGreen = Color.decode("#00FA9A"); /** - * The color YellowGreen - *
 
+ * The color YellowGreen + *
* * * @@ -708,8 +708,8 @@ public static class Greens **/ public static final Color YellowGreen = Color.decode("#9ACD32"); /** - * The color DarkTurquoise - *
 
+ * The color DarkTurquoise + *
* * * @@ -717,8 +717,8 @@ public static class Greens **/ public static final Color DarkTurquoise = Color.decode("#00CED1"); /** - * The color DarkSeaGreen - *
 
+ * The color DarkSeaGreen + *
* * * @@ -726,8 +726,8 @@ public static class Greens **/ public static final Color DarkSeaGreen = Color.decode("#8FBC8F"); /** - * The color GreenYellow - *
 
+ * The color GreenYellow + *
* * * @@ -735,8 +735,8 @@ public static class Greens **/ public static final Color GreenYellow = Color.decode("#ADFF2F"); /** - * The color MediumAquamarine - *
 
+ * The color MediumAquamarine + *
* * * @@ -744,8 +744,8 @@ public static class Greens **/ public static final Color MediumAquamarine = Color.decode("#66CDAA"); /** - * The color MediumTurquoise - *
 
+ * The color MediumTurquoise + *
* * * @@ -753,8 +753,8 @@ public static class Greens **/ public static final Color MediumTurquoise = Color.decode("#48D1CC"); /** - * The color Turquoise - *
 
+ * The color Turquoise + *
* * * @@ -762,8 +762,8 @@ public static class Greens **/ public static final Color Turquoise = Color.decode("#40E0D0"); /** - * The color LightGreen - *
 
+ * The color LightGreen + *
* * * @@ -771,8 +771,8 @@ public static class Greens **/ public static final Color LightGreen = Color.decode("#90EE90"); /** - * The color PaleGreen - *
 
+ * The color PaleGreen + *
* * * @@ -780,8 +780,8 @@ public static class Greens **/ public static final Color PaleGreen = Color.decode("#98FB98"); /** - * The color Aquamarine - *
 
+ * The color Aquamarine + *
* * * @@ -789,8 +789,8 @@ public static class Greens **/ public static final Color Aquamarine = Color.decode("#7FFFD4"); /** - * The color PaleTurquoise - *
 
+ * The color PaleTurquoise + *
* * * @@ -801,8 +801,8 @@ public static class Greens public static class Oranges { /** - * The color OrangeRed - *
 
+ * The color OrangeRed + *
* * * @@ -810,8 +810,8 @@ public static class Oranges **/ public static final Color OrangeRed = Color.decode("#FF4500"); /** - * The color DarkOrange - *
 
+ * The color DarkOrange + *
* * * @@ -819,8 +819,8 @@ public static class Oranges **/ public static final Color DarkOrange = Color.decode("#FF8C00"); /** - * The color Orange - *
 
+ * The color Orange + *
* * * @@ -828,8 +828,8 @@ public static class Oranges **/ public static final Color Orange = Color.decode("#FFA500"); /** - * The color Tomato - *
 
+ * The color Tomato + *
* * * @@ -837,8 +837,8 @@ public static class Oranges **/ public static final Color Tomato = Color.decode("#FF6347"); /** - * The color Coral - *
 
+ * The color Coral + *
* * * @@ -846,8 +846,8 @@ public static class Oranges **/ public static final Color Coral = Color.decode("#FF7F50"); /** - * The color LightSalmon - *
 
+ * The color LightSalmon + *
* * * @@ -858,8 +858,8 @@ public static class Oranges public static class Pinks { /** - * The color MediumVioletRed - *
 
+ * The color MediumVioletRed + *
* * * @@ -867,8 +867,8 @@ public static class Pinks **/ public static final Color MediumVioletRed = Color.decode("#C71585"); /** - * The color DeepPink - *
 
+ * The color DeepPink + *
* * * @@ -876,8 +876,8 @@ public static class Pinks **/ public static final Color DeepPink = Color.decode("#FF1493"); /** - * The color PaleVioletRed - *
 
+ * The color PaleVioletRed + *
* * * @@ -885,8 +885,8 @@ public static class Pinks **/ public static final Color PaleVioletRed = Color.decode("#DB7093"); /** - * The color Fuchsia - *
 
+ * The color Fuchsia + *
* * * @@ -894,8 +894,8 @@ public static class Pinks **/ public static final Color Fuchsia = Color.decode("#FF00FF"); /** - * The color HotPink - *
 
+ * The color HotPink + *
* * * @@ -903,8 +903,8 @@ public static class Pinks **/ public static final Color HotPink = Color.decode("#FF69B4"); /** - * The color LightPink - *
 
+ * The color LightPink + *
* * * @@ -912,8 +912,8 @@ public static class Pinks **/ public static final Color LightPink = Color.decode("#FFB6C1"); /** - * The color Pink - *
 
+ * The color Pink + *
* * * @@ -924,8 +924,8 @@ public static class Pinks public static class Purples { /** - * The color Indigo - *
 
+ * The color Indigo + *
* * * @@ -933,8 +933,8 @@ public static class Purples **/ public static final Color Indigo = Color.decode("#4B0082"); /** - * The color Purple - *
 
+ * The color Purple + *
* * * @@ -942,8 +942,8 @@ public static class Purples **/ public static final Color Purple = Color.decode("#800080"); /** - * The color DarkSlateBlue - *
 
+ * The color DarkSlateBlue + *
* * * @@ -951,8 +951,8 @@ public static class Purples **/ public static final Color DarkSlateBlue = Color.decode("#483D8B"); /** - * The color DarkMagenta - *
 
+ * The color DarkMagenta + *
* * * @@ -960,8 +960,8 @@ public static class Purples **/ public static final Color DarkMagenta = Color.decode("#8B008B"); /** - * The color MediumVioletRed - *
 
+ * The color MediumVioletRed + *
* * * @@ -969,8 +969,8 @@ public static class Purples **/ public static final Color MediumVioletRed = Color.decode("#C71585"); /** - * The color DarkViolet - *
 
+ * The color DarkViolet + *
* * * @@ -978,8 +978,8 @@ public static class Purples **/ public static final Color DarkViolet = Color.decode("#9400D3"); /** - * The color SlateBlue - *
 
+ * The color SlateBlue + *
* * * @@ -987,8 +987,8 @@ public static class Purples **/ public static final Color SlateBlue = Color.decode("#6A5ACD"); /** - * The color BlueViolet - *
 
+ * The color BlueViolet + *
* * * @@ -996,8 +996,8 @@ public static class Purples **/ public static final Color BlueViolet = Color.decode("#8A2BE2"); /** - * The color DarkOrchid - *
 
+ * The color DarkOrchid + *
* * * @@ -1005,8 +1005,8 @@ public static class Purples **/ public static final Color DarkOrchid = Color.decode("#9932CC"); /** - * The color MediumSlateBlue - *
 
+ * The color MediumSlateBlue + *
* * * @@ -1014,8 +1014,8 @@ public static class Purples **/ public static final Color MediumSlateBlue = Color.decode("#7B68EE"); /** - * The color RosyBrown - *
 
+ * The color RosyBrown + *
* * * @@ -1023,8 +1023,8 @@ public static class Purples **/ public static final Color RosyBrown = Color.decode("#BC8F8F"); /** - * The color MediumPurple - *
 
+ * The color MediumPurple + *
* * * @@ -1032,8 +1032,8 @@ public static class Purples **/ public static final Color MediumPurple = Color.decode("#9370DB"); /** - * The color PaleVioletRed - *
 
+ * The color PaleVioletRed + *
* * * @@ -1041,8 +1041,8 @@ public static class Purples **/ public static final Color PaleVioletRed = Color.decode("#DB7093"); /** - * The color MediumOrchid - *
 
+ * The color MediumOrchid + *
* * * @@ -1050,8 +1050,8 @@ public static class Purples **/ public static final Color MediumOrchid = Color.decode("#BA55D3"); /** - * The color Fuchsia - *
 
+ * The color Fuchsia + *
* * * @@ -1059,8 +1059,8 @@ public static class Purples **/ public static final Color Fuchsia = Color.decode("#FF00FF"); /** - * The color Magenta - *
 
+ * The color Magenta + *
* * * @@ -1068,8 +1068,8 @@ public static class Purples **/ public static final Color Magenta = Color.decode("#FF00FF"); /** - * The color Orchid - *
 
+ * The color Orchid + *
* * * @@ -1077,8 +1077,8 @@ public static class Purples **/ public static final Color Orchid = Color.decode("#DA70D6"); /** - * The color Plum - *
 
+ * The color Plum + *
* * * @@ -1086,8 +1086,8 @@ public static class Purples **/ public static final Color Plum = Color.decode("#DDA0DD"); /** - * The color Violet - *
 
+ * The color Violet + *
* * * @@ -1095,8 +1095,8 @@ public static class Purples **/ public static final Color Violet = Color.decode("#EE82EE"); /** - * The color Thistle - *
 
+ * The color Thistle + *
* * * @@ -1104,8 +1104,8 @@ public static class Purples **/ public static final Color Thistle = Color.decode("#D8BFD8"); /** - * The color Lavender - *
 
+ * The color Lavender + *
* * * @@ -1116,8 +1116,8 @@ public static class Purples public static class Reds { /** - * The color DarkRed - *
 
+ * The color DarkRed + *
* * * @@ -1125,8 +1125,8 @@ public static class Reds **/ public static final Color DarkRed = Color.decode("#8B0000"); /** - * The color FireBrick - *
 
+ * The color FireBrick + *
* * * @@ -1134,8 +1134,8 @@ public static class Reds **/ public static final Color FireBrick = Color.decode("#B22222"); /** - * The color Red - *
 
+ * The color Red + *
* * * @@ -1143,8 +1143,8 @@ public static class Reds **/ public static final Color Red = Color.decode("#FF0000"); /** - * The color Crimson - *
 
+ * The color Crimson + *
* * * @@ -1152,8 +1152,8 @@ public static class Reds **/ public static final Color Crimson = Color.decode("#DC143C"); /** - * The color OrangeRed - *
 
+ * The color OrangeRed + *
* * * @@ -1161,8 +1161,8 @@ public static class Reds **/ public static final Color OrangeRed = Color.decode("#FF4500"); /** - * The color MediumVioletRed - *
 
+ * The color MediumVioletRed + *
* * * @@ -1170,8 +1170,8 @@ public static class Reds **/ public static final Color MediumVioletRed = Color.decode("#C71585"); /** - * The color IndianRed - *
 
+ * The color IndianRed + *
* * * @@ -1179,8 +1179,8 @@ public static class Reds **/ public static final Color IndianRed = Color.decode("#CD5C5C"); /** - * The color Tomato - *
 
+ * The color Tomato + *
* * * @@ -1188,8 +1188,8 @@ public static class Reds **/ public static final Color Tomato = Color.decode("#FF6347"); /** - * The color PaleVioletRed - *
 
+ * The color PaleVioletRed + *
* * * @@ -1197,8 +1197,8 @@ public static class Reds **/ public static final Color PaleVioletRed = Color.decode("#DB7093"); /** - * The color Salmon - *
 
+ * The color Salmon + *
* * * @@ -1206,8 +1206,8 @@ public static class Reds **/ public static final Color Salmon = Color.decode("#FA8072"); /** - * The color LightCoral - *
 
+ * The color LightCoral + *
* * * @@ -1215,8 +1215,8 @@ public static class Reds **/ public static final Color LightCoral = Color.decode("#F08080"); /** - * The color DarkSalmon - *
 
+ * The color DarkSalmon + *
* * * @@ -1224,8 +1224,8 @@ public static class Reds **/ public static final Color DarkSalmon = Color.decode("#E9967A"); /** - * The color LightSalmon - *
 
+ * The color LightSalmon + *
* * * @@ -1236,8 +1236,8 @@ public static class Reds public static class Whites { /** - * The color AntiqueWhite - *
 
+ * The color AntiqueWhite + *
* * * @@ -1245,8 +1245,8 @@ public static class Whites **/ public static final Color AntiqueWhite = Color.decode("#FAEBD7"); /** - * The color MistyRose - *
 
+ * The color MistyRose + *
* * * @@ -1254,8 +1254,8 @@ public static class Whites **/ public static final Color MistyRose = Color.decode("#FFE4E1"); /** - * The color Beige - *
 
+ * The color Beige + *
* * * @@ -1263,8 +1263,8 @@ public static class Whites **/ public static final Color Beige = Color.decode("#F5F5DC"); /** - * The color Linen - *
 
+ * The color Linen + *
* * * @@ -1272,8 +1272,8 @@ public static class Whites **/ public static final Color Linen = Color.decode("#FAF0E6"); /** - * The color OldLace - *
 
+ * The color OldLace + *
* * * @@ -1281,8 +1281,8 @@ public static class Whites **/ public static final Color OldLace = Color.decode("#FDF5E6"); /** - * The color Honeydew - *
 
+ * The color Honeydew + *
* * * @@ -1290,8 +1290,8 @@ public static class Whites **/ public static final Color Honeydew = Color.decode("#F0FFF0"); /** - * The color WhiteSmoke - *
 
+ * The color WhiteSmoke + *
* * * @@ -1299,8 +1299,8 @@ public static class Whites **/ public static final Color WhiteSmoke = Color.decode("#F5F5F5"); /** - * The color Seashell - *
 
+ * The color Seashell + *
* * * @@ -1308,8 +1308,8 @@ public static class Whites **/ public static final Color Seashell = Color.decode("#FFF5EE"); /** - * The color LavenderBlush - *
 
+ * The color LavenderBlush + *
* * * @@ -1317,8 +1317,8 @@ public static class Whites **/ public static final Color LavenderBlush = Color.decode("#FFF0F5"); /** - * The color AliceBlue - *
 
+ * The color AliceBlue + *
* * * @@ -1326,8 +1326,8 @@ public static class Whites **/ public static final Color AliceBlue = Color.decode("#F0F8FF"); /** - * The color FloralWhite - *
 
+ * The color FloralWhite + *
* * * @@ -1335,8 +1335,8 @@ public static class Whites **/ public static final Color FloralWhite = Color.decode("#FFFAF0"); /** - * The color MintCream - *
 
+ * The color MintCream + *
* * * @@ -1344,8 +1344,8 @@ public static class Whites **/ public static final Color MintCream = Color.decode("#F5FFFA"); /** - * The color Azure - *
 
+ * The color Azure + *
* * * @@ -1353,8 +1353,8 @@ public static class Whites **/ public static final Color Azure = Color.decode("#F0FFFF"); /** - * The color Ivory - *
 
+ * The color Ivory + *
* * * @@ -1362,8 +1362,8 @@ public static class Whites **/ public static final Color Ivory = Color.decode("#FFFFF0"); /** - * The color GhostWhite - *
 
+ * The color GhostWhite + *
* * * @@ -1371,8 +1371,8 @@ public static class Whites **/ public static final Color GhostWhite = Color.decode("#F8F8FF"); /** - * The color Snow - *
 
+ * The color Snow + *
* * * @@ -1380,8 +1380,8 @@ public static class Whites **/ public static final Color Snow = Color.decode("#FFFAFA"); /** - * The color White - *
 
+ * The color White + *
* * * @@ -1392,8 +1392,8 @@ public static class Whites public static class Yellows { /** - * The color DarkGoldenrod - *
 
+ * The color DarkGoldenrod + *
* * * @@ -1401,8 +1401,8 @@ public static class Yellows **/ public static final Color DarkGoldenrod = Color.decode("#B8860B"); /** - * The color Goldenrod - *
 
+ * The color Goldenrod + *
* * * @@ -1410,8 +1410,8 @@ public static class Yellows **/ public static final Color Goldenrod = Color.decode("#DAA520"); /** - * The color Gold - *
 
+ * The color Gold + *
* * * @@ -1419,8 +1419,8 @@ public static class Yellows **/ public static final Color Gold = Color.decode("#FFD700"); /** - * The color DarkKhaki - *
 
+ * The color DarkKhaki + *
* * * @@ -1428,8 +1428,8 @@ public static class Yellows **/ public static final Color DarkKhaki = Color.decode("#BDB76B"); /** - * The color Yellow - *
 
+ * The color Yellow + *
* * * @@ -1437,8 +1437,8 @@ public static class Yellows **/ public static final Color Yellow = Color.decode("#FFFF00"); /** - * The color Khaki - *
 
+ * The color Khaki + *
* * * @@ -1446,8 +1446,8 @@ public static class Yellows **/ public static final Color Khaki = Color.decode("#F0E68C"); /** - * The color PaleGoldenrod - *
 
+ * The color PaleGoldenrod + *
* * * @@ -1455,8 +1455,8 @@ public static class Yellows **/ public static final Color PaleGoldenrod = Color.decode("#EEE8AA"); /** - * The color PeachPuff - *
 
+ * The color PeachPuff + *
* * * @@ -1464,8 +1464,8 @@ public static class Yellows **/ public static final Color PeachPuff = Color.decode("#FFDAB9"); /** - * The color Moccasin - *
 
+ * The color Moccasin + *
* * * @@ -1473,8 +1473,8 @@ public static class Yellows **/ public static final Color Moccasin = Color.decode("#FFE4B5"); /** - * The color PapayaWhip - *
 
+ * The color PapayaWhip + *
* * * @@ -1482,8 +1482,8 @@ public static class Yellows **/ public static final Color PapayaWhip = Color.decode("#FFEFD5"); /** - * The color LemonChiffon - *
 
+ * The color LemonChiffon + *
* * * @@ -1491,8 +1491,8 @@ public static class Yellows **/ public static final Color LemonChiffon = Color.decode("#FFFACD"); /** - * The color LightGoldenrodYellow - *
 
+ * The color LightGoldenrodYellow + *
* * * @@ -1500,8 +1500,8 @@ public static class Yellows **/ public static final Color LightGoldenrodYellow = Color.decode("#FAFAD2"); /** - * The color LightYellow - *
 
+ * The color LightYellow + *
* * * @@ -1535,7 +1535,7 @@ private static int increase(int amount, int increaseBy) /** * Gets a random pen color *
Example: {@code penColors.getRandomColor( )}
- * + * @return A color */ public static Color getRandomColor() { diff --git a/src/main/java/org/teachingextensions/logo/Pizza.java b/src/main/java/org/teachingextensions/logo/Pizza.java new file mode 100644 index 0000000..d414bf0 --- /dev/null +++ b/src/main/java/org/teachingextensions/logo/Pizza.java @@ -0,0 +1,83 @@ +package org.teachingextensions.logo; + +import java.util.ArrayList; + +/** + * A slice of pizza + * The Pizza allows you to make different sizes and kinds of pizza! + */ +public class Pizza { + private ArrayList toppings = new ArrayList(); + private boolean cooked; + private int slices = 2; + + /** + * Adds a topping to a pizza + *
Example: {@code pizza.addTopping(Topping.Spam)}
+ * + * @param topping A topping from the list + */ + public void addTopping(Topping topping) { + this.toppings.add(topping); + } + + /** + * Checks to see if a pizza has a particular kind of topping + *
Example: {@code pizza.hasTopping(topping)}
+ * + * @param topping A topping from the list to check for + * @return true when the pizza has the topping on it + */ + public boolean hasTopping(Topping topping) { + for (Topping toppingToday : toppings) { + if (toppingToday == topping) { + return true; + } + } + return false; + } + + /** + * Cooks a pizza + *
Example: {@code pizza.cook()}
+ */ + public void cook() { + this.cooked = true; + } + + /** + * Checks whether a pizza was cooked + *
Example: {@code pizza.wasCooked()}
+ * + * @return whether or not the pizza has been cooked already + */ + public boolean wasCooked() { + return this.cooked; + } + + public void ____() { + } + + /** + * Checks whether you can take a slice of pizza or not + *
Example: {@code pizza.takeSlice()}
+ * + * @return whether or not the pizza has any more slices to take + * If there are still slices, takes one slice + */ + public boolean takeSlice() { + if (0 < this.slices) { + this.slices--; + return true; + } + return false; + } + + /** + * Adds more slices to a pizza + *
Example: {@code pizza.superSizeIt()}
+ */ + public void superSizeIt() { + this.slices = 8; + } +} diff --git a/src/org/teachingextensions/logo/Puzzle.java b/src/main/java/org/teachingextensions/logo/Puzzle.java similarity index 100% rename from src/org/teachingextensions/logo/Puzzle.java rename to src/main/java/org/teachingextensions/logo/Puzzle.java diff --git a/src/org/teachingextensions/logo/PuzzleAnimation.java b/src/main/java/org/teachingextensions/logo/PuzzleAnimation.java similarity index 100% rename from src/org/teachingextensions/logo/PuzzleAnimation.java rename to src/main/java/org/teachingextensions/logo/PuzzleAnimation.java diff --git a/src/org/teachingextensions/logo/PuzzleBoard.java b/src/main/java/org/teachingextensions/logo/PuzzleBoard.java similarity index 50% rename from src/org/teachingextensions/logo/PuzzleBoard.java rename to src/main/java/org/teachingextensions/logo/PuzzleBoard.java index 2707c4b..c3f30b1 100644 --- a/src/org/teachingextensions/logo/PuzzleBoard.java +++ b/src/main/java/org/teachingextensions/logo/PuzzleBoard.java @@ -9,30 +9,31 @@ import javax.swing.JPanel; +import org.teachingextensions.approvals.lite.util.StringUtils; +import org.teachingextensions.windows.ProgramWindow; + /** * Draws and animates a 9-puzzle */ -public class PuzzleBoard extends JPanel { +public class PuzzleBoard extends JPanel +{ private static final long serialVersionUID = -2008156268412728375L; private final static int blank = 8; private final Tile[] tiles; private final Queue solution; - - public PuzzleBoard(Puzzle puzzle, PuzzleState solution) { + public PuzzleBoard(Puzzle puzzle, PuzzleState solution) + { super(); this.solution = createSolution(solution, puzzle); this.tiles = createTiles(puzzle.getCells()); } - - private static Queue createSolution(PuzzleState solution, - Puzzle puzzle) { - if (solution == null) { - return new ArrayDeque<>(); - } - + public static Queue createSolution(PuzzleState solution, Puzzle puzzle) + { + if (solution == null) { return new ArrayDeque<>(); } int i = puzzle.getBlankIndex(); Queue moves = new ArrayDeque<>(); - for (PuzzleState.Direction d : solution.getHistory()) { + for (PuzzleState.Direction d : solution.getHistory()) + { int m = d.getValue(); TileMove move = new TileMove(i + m, i); moves.add(move); @@ -40,66 +41,79 @@ private static Queue createSolution(PuzzleState solution, } return moves; } - - private static Tile[] createTiles(int[] cells) { + private static Tile[] createTiles(int[] cells) + { Tile[] t = new Tile[9]; - for (int i = 0; i < 9; i++) { - if (cells[i] == blank) { + for (int i = 0; i < 9; i++) + { + if (cells[i] == blank) + { continue; } - t[i] = new Tile(i, cells[i]); } return t; } - - private static void drawBorder(Graphics g) { + private static void drawBorder(Graphics2D g) + { g.setColor(PenColors.Blues.DarkBlue); g.fillRect(20, 20, 410, 410); } - - private static void drawField(Graphics g) { + private static void drawField(Graphics2D g) + { g.setColor(PenColors.Blues.SkyBlue); g.fillRect(30, 30, 386, 386); } - - private static void drawTiles(Graphics g, Tile[] tiles) { - Graphics2D g2d = (Graphics2D) g.create(); - for (Tile tile : tiles) { - if (tile == null) { + private static void drawTiles(Graphics2D g, Tile[] tiles) + { + for (Tile tile : tiles) + { + if (tile == null) + { continue; } - tile.paint(g2d); + tile.paint(g); } - g2d.dispose(); } - @Override - protected void paintComponent(Graphics g) { + protected void paintComponent(Graphics g) + { super.paintComponent(g); - drawBorder(g); - drawField(g); - drawTiles(g, tiles); + Graphics2D g2d = ProgramWindow.configureGraphics2D(g); + drawBorder(g2d); + drawField(g2d); + drawTiles(g2d, tiles); + g2d.dispose(); } - - public Tile[] getTiles() { + public Tile[] getTiles() + { return Arrays.copyOf(tiles, tiles.length); } - - public boolean hasMoves() { + public boolean hasMoves() + { return !solution.isEmpty(); } - - public TileMove getNextMove() { + public TileMove getNextMove() + { return solution.isEmpty() ? null : solution.remove(); } - - public void swap(int start, int end) { + @Override + public String toString() + { + StringBuilder sb = new StringBuilder(); + sb.append("PuzzleBoard" + StringUtils.NEW_LINE); + for (int i = 0; i < tiles.length; i += 3) + { + sb.append(tiles[i] + ", " + tiles[i + 1] + ", " + tiles[i + 2] + StringUtils.NEW_LINE); + } + return sb.toString(); + } + public void swap(int start, int end) + { Point p = Tile.getPosition(end); Tile tile = tiles[start]; tile.moveTo(p); tiles[start] = null; tiles[end] = tile; - } } diff --git a/src/org/teachingextensions/logo/PuzzlePlayer.java b/src/main/java/org/teachingextensions/logo/PuzzlePlayer.java similarity index 100% rename from src/org/teachingextensions/logo/PuzzlePlayer.java rename to src/main/java/org/teachingextensions/logo/PuzzlePlayer.java diff --git a/src/org/teachingextensions/logo/PuzzleState.java b/src/main/java/org/teachingextensions/logo/PuzzleState.java similarity index 100% rename from src/org/teachingextensions/logo/PuzzleState.java rename to src/main/java/org/teachingextensions/logo/PuzzleState.java diff --git a/src/org/teachingextensions/logo/PuzzleWindow.java b/src/main/java/org/teachingextensions/logo/PuzzleWindow.java similarity index 100% rename from src/org/teachingextensions/logo/PuzzleWindow.java rename to src/main/java/org/teachingextensions/logo/PuzzleWindow.java diff --git a/src/org/teachingextensions/logo/ScreenCapture.java b/src/main/java/org/teachingextensions/logo/ScreenCapture.java similarity index 100% rename from src/org/teachingextensions/logo/ScreenCapture.java rename to src/main/java/org/teachingextensions/logo/ScreenCapture.java diff --git a/src/org/teachingextensions/logo/Tile.java b/src/main/java/org/teachingextensions/logo/Tile.java similarity index 94% rename from src/org/teachingextensions/logo/Tile.java rename to src/main/java/org/teachingextensions/logo/Tile.java index 4eac054..85fdfb6 100644 --- a/src/org/teachingextensions/logo/Tile.java +++ b/src/main/java/org/teachingextensions/logo/Tile.java @@ -64,4 +64,9 @@ public void moveTo(Point goal) { target = goal; } + @Override + public String toString() + { + return "Tile{" + position.x + ", " + position.y + '}'; + } } diff --git a/src/org/teachingextensions/logo/TileMove.java b/src/main/java/org/teachingextensions/logo/TileMove.java similarity index 71% rename from src/org/teachingextensions/logo/TileMove.java rename to src/main/java/org/teachingextensions/logo/TileMove.java index a1d3758..77e1297 100644 --- a/src/org/teachingextensions/logo/TileMove.java +++ b/src/main/java/org/teachingextensions/logo/TileMove.java @@ -13,6 +13,14 @@ public TileMove(int start, int end) { this.end = end; } + @Override + public String toString() { + return "TileMove{" + + "start=" + start + + ", end=" + end + + '}'; + } + public int getStart() { return start; } diff --git a/src/org/teachingextensions/logo/Topping.java b/src/main/java/org/teachingextensions/logo/Topping.java similarity index 100% rename from src/org/teachingextensions/logo/Topping.java rename to src/main/java/org/teachingextensions/logo/Topping.java diff --git a/src/org/teachingextensions/logo/Tortoise.java b/src/main/java/org/teachingextensions/logo/Tortoise.java similarity index 85% rename from src/org/teachingextensions/logo/Tortoise.java rename to src/main/java/org/teachingextensions/logo/Tortoise.java index fe72b83..315078d 100644 --- a/src/org/teachingextensions/logo/Tortoise.java +++ b/src/main/java/org/teachingextensions/logo/Tortoise.java @@ -6,7 +6,7 @@ import org.teachingextensions.logo.utils.TortoiseUtils; /** - * + * A tortoise drawing a line * The Tortoise allows you to draw lines and shapes by moving it around on the window */ public class Tortoise @@ -41,7 +41,7 @@ public static int getSpeed() return turtle().getSpeed(); } /** - * Sets the color drawn by the Tortoise.
+ * Sets the color drawn by the Tortoise.
*
Example: {@code Tortoise.setPenColor(PenColors.Reds.Red)}
* * @param color @@ -53,7 +53,7 @@ public static void setPenColor(Color color) turtle().setPenColor(color); } /** - * Moves the Tortoise Forward the number of pixels specified.
+ * Moves the Tortoise Forward the number of pixels specified.
*
Example: {@code Tortoise.move(72)}
* * @param lengthInPixels @@ -65,7 +65,7 @@ public static void move(Number lengthInPixels) turtle().move(lengthInPixels); } /** - * Turns the Tortoise to the right (clockwise) the degrees specified.
+ * Turns the Tortoise to the right (clockwise) the degrees specified.
*
Example: {@code Tortoise.turn(90)}
* * @param degreesToTheRight @@ -77,7 +77,7 @@ public static void turn(Number degreesToTheRight) turtle().turn(degreesToTheRight.doubleValue()); } /** - * Sets the width of the pen drawn by the Tortoise.
+ * Sets the width of the pen drawn by the Tortoise.
*
Example: {@code Tortoise.setPenWidth(2)}
* * @param width @@ -89,15 +89,16 @@ public static void setPenWidth(Number width) } /** * Gives you access to the window the - * Tortoise is moving on so you can do things like change it's color.
+ * Tortoise is moving on so you can do things like change it's color.
* Example: {@code TurtlePanel panel = Tortoise.getBackgroundWindow()} + * @return the window that the Tortoise is moving on */ public static TurtlePanel getBackgroundWindow() { return turtle().getBackgroundWindow(); } /** - * Gets the current width of the pen drawn by the Tortoise.
+ * Gets the current width of the pen drawn by the Tortoise.
*
Example: {@code width = Tortoise.getPenWidth()}
* * @return the width of the pen stroke @@ -107,7 +108,7 @@ public static int getPenWidth() return turtle().getPenWidth(); } /** - * Gets the current color of the pen drawn by the Tortoise.
+ * Gets the current color of the pen drawn by the Tortoise.
*
Example: {@code pen = Tortoise.getPenColor()}
* * @return the color of the pen stroke @@ -117,8 +118,8 @@ public static Color getPenColor() return turtle().getPenColor(); } /** - * Sets the position of the Tortoise on the y axis.
- * (0,0) is the top left of the screen
+ * Sets the position of the Tortoise on the y axis.
+ * (0,0) is the top left of the screen
*
Example: {@code Tortoise.setY(30);}
* * @param y @@ -129,8 +130,8 @@ public static void setY(int y) turtle().setY(y); } /** - * Sets the position of the Tortoise on the x axis.
- * (0,0) is the top left of the screen
+ * Sets the position of the Tortoise on the x axis.
+ * (0,0) is the top left of the screen
*
Example: {@code Tortoise.setX(30);}
* * @param x @@ -141,8 +142,8 @@ public static void setX(int x) turtle().setX(x); } /** - * Gets the current position of the Tortoise on the y axis.
- * (0,0) is the top left of the screen
+ * Gets the current position of the Tortoise on the y axis.
+ * (0,0) is the top left of the screen
*
Example: {@code y = Tortoise.getY()}
* * @return y the position in pixels of the Tortoise on the Y axis @@ -152,8 +153,8 @@ public static int getY() return turtle().getY(); } /** - * Gets the current position of the Tortoise on the x axis.
- * (0,0) is the top left of the screen
+ * Gets the current position of the Tortoise on the x axis.
+ * (0,0) is the top left of the screen
*
Example: {@code x = Tortoise.getX()}
* * @return x the position in pixels of the Tortoise on the X axis @@ -163,9 +164,9 @@ public static int getX() return turtle().getX(); } /** - * Gets the current heading of the Tortoise.
- * 0 degrees is due north.
- * 90 degrees is due east.
+ * Gets the current heading of the Tortoise.
+ * 0 degrees is due north.
+ * 90 degrees is due east.
*
Example: {@code angle = Tortoise.getAngleInDegrees()}
* * @return the angle in degrees of the Tortoise @@ -175,9 +176,10 @@ public static double getAngle() return turtle().getAngleInDegrees(); } /** - * Changes the type of animal you are using.
+ * Changes the type of animal you are using.
*
Example: {@code Tortoise.setAnimal(Animals.Spider);}
- * + * + * @param animal the animal you want to use * @see Animals */ public static void setAnimal(Animals animal) @@ -185,7 +187,7 @@ public static void setAnimal(Animals animal) turtle().setAnimal(animal); } /** - * Blows up your turtle!
+ * Blows up your turtle!
*
Example: {@code Tortoise.explode(Animals.ExplodedTurtle);}
* * @see Animals @@ -195,7 +197,7 @@ public static void explode() turtle().setAnimal(Animals.ExplodedTurtle); } /** - * Makes it so the tortoise will not draw a line of color out of its butt.
+ * Makes it so the tortoise will not draw a line of color out of its butt.
* Example: {@code Tortoise.penUp()} */ public static void penUp() @@ -203,7 +205,7 @@ public static void penUp() turtle().penUp(); } /** - * Makes it so a line of color out of will trail from the Tortoise.
+ * Makes it so a line of color out of will trail from the Tortoise.
* Example: {@code Tortoise.penDown()} */ public static void penDown() @@ -211,7 +213,7 @@ public static void penDown() turtle().penDown(); } /** - * Removes everything from the window.
+ * Removes everything from the window.
* Example: {@code Tortoise.clear()} */ public static void clear() @@ -219,7 +221,7 @@ public static void clear() turtle().clear(); } /** - * Hides the tortoise, you will still see the pen markings it made before and after it's hidden.
+ * Hides the tortoise, you will still see the pen markings it made before and after it's hidden.
* Example: {@code Tortoise.hide()} */ public static void hide() @@ -231,8 +233,8 @@ private static Turtle turtle() return TortoiseUtils.getTurtle(); } /** - * Sets the angle the Tortoise is facing.
- * 0 is straight up (like 'North')
+ * Sets the angle the Tortoise is facing.
+ * 0 is straight up (like 'North')
*
Example: {@code Tortoise.setAngle(42);}
* * @param angle @@ -243,7 +245,7 @@ public static void setAngle(int angle) turtle().setAngleInDegrees(angle); } /** - * Moves the Tortoise to a particular spot on the canvas.
+ * Moves the Tortoise to a particular spot on the canvas.
*
Example: {@code Tortoise.moveTo(100,200);}
* * @param x diff --git a/src/org/teachingextensions/logo/Turtle.java b/src/main/java/org/teachingextensions/logo/Turtle.java similarity index 97% rename from src/org/teachingextensions/logo/Turtle.java rename to src/main/java/org/teachingextensions/logo/Turtle.java index 6f1113d..251e5a8 100644 --- a/src/org/teachingextensions/logo/Turtle.java +++ b/src/main/java/org/teachingextensions/logo/Turtle.java @@ -1,14 +1,5 @@ package org.teachingextensions.logo; -import java.awt.Color; -import java.awt.Component; -import java.awt.Point; -import java.awt.image.BufferedImage; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.JFrame; - import org.teachingextensions.approvals.lite.util.ThreadLauncher; import org.teachingextensions.approvals.lite.util.lambda.Action0; import org.teachingextensions.approvals.lite.util.persistence.Saver; @@ -16,59 +7,20 @@ import org.teachingextensions.approvals.lite.writers.ComponentApprovalWriter; import org.teachingextensions.windows.ProgramWindow; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; + /** - * + * A turtle drawing a line * The Turtle allows you to draw lines and shapes by moving it around on the window, and you can put more than one turtle on the same window... */ public class Turtle { - /** - * Current types are: ExplodedTurtle, Turtle, Spider - */ - public enum Animals { - ExplodedTurtle, Turtle, Spider, Unicorn - } - private class Turner implements Saver - { - @Override - public Double save(Double save) throws SavingException - { - smallTurn(save); - return save; - } - } - private class Mover implements Saver - { - private final Point starting; - private LineSegment line = null; - public Mover(Point point) - { - this.starting = point; - } - @Override - public Double save(Double save) throws SavingException - { - moveWithoutAnimation(save); - if (line != null) - { - trail.remove(line); - } - line = new LineSegment(color, starting, new Point(getX(), getY()), width); - trail.add(line); - return save; - } - } - private class EmptyMover implements Saver - { - @Override - public Double save(Double save) throws SavingException - { - moveWithoutAnimation(save); - return save; - } - } - private static final double MAX_MOVE_AMOUNT = 5.0; public static final int TEST_SPEED = Integer.MIN_VALUE; + private static final double MAX_MOVE_AMOUNT = 5.0; private double x = 640 / 2; private double y = 480 / 2; private double angleInDegrees = 0; @@ -80,7 +32,23 @@ public Double save(Double save) throws SavingException private boolean penDown = true; private boolean hidden; private Animals animal; - // + public static double getDeltaY(double i, double angleInDegrees2) + { + return -i * Math.cos(Math.toRadians(angleInDegrees2)); + } + public static double getDeltaX(double i, double angleInDegrees2) + { + return i * Math.sin(Math.toRadians(angleInDegrees2)); + } + public static double angleCalculator(int x1, int y1, int x2, int y2) + { + int delta_x = x1 - x2; + int delta_y = y1 - y2; + double theta_radians = Math.atan2(delta_y, delta_x); + double degrees = Math.toDegrees(theta_radians); + double degreesWith0North = degrees - 90; + return degreesWith0North; + } public BufferedImage getImage() { BufferedImage image = ComponentApprovalWriter.drawComponent(getPanel()); @@ -111,14 +79,26 @@ private Component getPanel() } return panel; } + public void setPanel(TurtlePanel panel) + { + this.panel = panel; + } public int getX() { return (int) x; } + public void setX(Number x) + { + this.x = x.doubleValue(); + } public int getY() { return (int) y; } + public void setY(Number y) + { + this.y = y.doubleValue(); + } public double getAngleInDegrees() { return angleInDegrees; @@ -127,14 +107,6 @@ public void setAngleInDegrees(double angleInDegrees) { this.angleInDegrees = angleInDegrees; } - public void setX(Number x) - { - this.x = x.doubleValue(); - } - public void setY(Number y) - { - this.y = y.doubleValue(); - } public void turn(double amount) { double max = getTurnAmount(amount); @@ -190,6 +162,10 @@ private long getDelay() if (getSpeed() == TEST_SPEED) { return TEST_SPEED; } return 100 / getSpeed(); } + public int getSpeed() + { + return speed; + } public void setSpeed(int speed) { if (speed != TEST_SPEED) @@ -202,10 +178,6 @@ public void setSpeed(int speed) } this.speed = speed; } - public int getSpeed() - { - return speed; - } public double getHeadingInDegrees() { return angleInDegrees; @@ -221,26 +193,18 @@ private void moveWithoutAnimation(Double save) x += getDeltaX(save, angleInDegrees); y += getDeltaY(save, angleInDegrees); } - public static double getDeltaY(double i, double angleInDegrees2) - { - return -i * Math.cos(Math.toRadians(angleInDegrees2)); - } - public static double getDeltaX(double i, double angleInDegrees2) + public LineSegment[] getTrail() { - return i * Math.sin(Math.toRadians(angleInDegrees2)); + return trail.toArray(new LineSegment[trail.size()]); } - public LineSegment[] getTrail() + public Color getPenColor() { - return trail.toArray(new LineSegment[0]); + return color; } public void setPenColor(Color color) { this.color = color; } - public Color getPenColor() - { - return color; - } public int getPenWidth() { return width; @@ -304,19 +268,6 @@ public void moveSynchronized(int x, int y) double distance = new Point(x, y).distance(getX(), getY()); move(distance); } - public static double angleCalculator(int x1, int y1, int x2, int y2) - { - int delta_x = x1 - x2; - int delta_y = y1 - y2; - double theta_radians = Math.atan2(delta_y, delta_x); - double degrees = Math.toDegrees(theta_radians); - double degreesWith0North = degrees - 90; - return degreesWith0North; - } - public void setPanel(TurtlePanel panel) - { - this.panel = panel; - } public void drawStar(int size) { for (int i = 1; i <= 5; i++) @@ -329,4 +280,49 @@ public boolean isDead() { return this.animal == Animals.ExplodedTurtle; } + /** + * Current types are: ExplodedTurtle, Turtle, Spider + */ + public enum Animals { + ExplodedTurtle, Turtle, Spider, Unicorn + } + private class Turner implements Saver + { + @Override + public Double save(Double save) throws SavingException + { + smallTurn(save); + return save; + } + } + private class Mover implements Saver + { + private final Point starting; + private LineSegment line = null; + public Mover(Point point) + { + this.starting = point; + } + @Override + public Double save(Double save) throws SavingException + { + moveWithoutAnimation(save); + if (line != null) + { + trail.remove(line); + } + line = new LineSegment(color, starting, new Point(getX(), getY()), width); + trail.add(line); + return save; + } + } + private class EmptyMover implements Saver + { + @Override + public Double save(Double save) throws SavingException + { + moveWithoutAnimation(save); + return save; + } + } } diff --git a/src/org/teachingextensions/logo/TurtlePanel.java b/src/main/java/org/teachingextensions/logo/TurtlePanel.java similarity index 85% rename from src/org/teachingextensions/logo/TurtlePanel.java rename to src/main/java/org/teachingextensions/logo/TurtlePanel.java index 579eaf6..d0ddfc8 100644 --- a/src/org/teachingextensions/logo/TurtlePanel.java +++ b/src/main/java/org/teachingextensions/logo/TurtlePanel.java @@ -15,15 +15,19 @@ import org.teachingextensions.logo.Turtle.Animals; import org.teachingextensions.windows.ProgramWindow; -@SuppressWarnings("serial") public class TurtlePanel extends ProgramWindow { - private Turtle turtle; - private Image image; - private Animals animal; + private static final long serialVersionUID = 3272676059303477850L; + private Turtle turtle; + private Image image; + private Animals animal; public TurtlePanel() { } + public TurtlePanel(String string) + { + super(string); + } public void setTurtle(Turtle turtle) { this.turtle = turtle; @@ -85,8 +89,13 @@ public synchronized Animals getAnimal() public synchronized void setAnimal(Animals animal) { this.animal = animal; - URL resource = this.getClass().getResource(animal + ".png"); - if (resource == null) { throw new IllegalStateException("Could not find animal: " + animal + ".png"); } + String name = animal + ".png"; + URL resource = this.getClass().getResource(name); + if (resource == null) + { + resource = this.getClass().getClassLoader().getResource(name); + } + if (resource == null) { throw new IllegalStateException("Could not find animal: " + name); } image = new ImageIcon(resource).getImage(); } public void setCursor(int cursor) diff --git a/src/org/teachingextensions/logo/UniformCostPlayer.java b/src/main/java/org/teachingextensions/logo/UniformCostPlayer.java similarity index 100% rename from src/org/teachingextensions/logo/UniformCostPlayer.java rename to src/main/java/org/teachingextensions/logo/UniformCostPlayer.java diff --git a/src/org/teachingextensions/logo/VirtualProctorFileSystem.java b/src/main/java/org/teachingextensions/logo/VirtualProctorFileSystem.java similarity index 100% rename from src/org/teachingextensions/logo/VirtualProctorFileSystem.java rename to src/main/java/org/teachingextensions/logo/VirtualProctorFileSystem.java diff --git a/src/org/teachingextensions/logo/VirtualProctorWeb.java b/src/main/java/org/teachingextensions/logo/VirtualProctorWeb.java similarity index 99% rename from src/org/teachingextensions/logo/VirtualProctorWeb.java rename to src/main/java/org/teachingextensions/logo/VirtualProctorWeb.java index 5de0d38..f00d856 100644 --- a/src/org/teachingextensions/logo/VirtualProctorWeb.java +++ b/src/main/java/org/teachingextensions/logo/VirtualProctorWeb.java @@ -14,12 +14,13 @@ import javax.imageio.ImageIO; +import org.teachingextensions.approvals.lite.util.lambda.Action0; +import org.teachingextensions.utils.VirtualProctor; + import org.teachingextensions.approvals.lite.util.MySystem; import org.teachingextensions.approvals.lite.util.ThreadLauncher; import org.teachingextensions.approvals.lite.util.ThreadUtils; import org.teachingextensions.approvals.lite.util.io.FileUtils; -import org.teachingextensions.approvals.lite.util.lambda.Action0; -import org.teachingextensions.utils.VirtualProctor; public class VirtualProctorWeb extends WindowAdapter { diff --git a/src/main/java/org/teachingextensions/logo/Wheel.java b/src/main/java/org/teachingextensions/logo/Wheel.java new file mode 100644 index 0000000..bbbec15 --- /dev/null +++ b/src/main/java/org/teachingextensions/logo/Wheel.java @@ -0,0 +1,67 @@ +package org.teachingextensions.logo; + +import org.teachingextensions.approvals.lite.util.NumberUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * A Wheel is a List with no ending on beginning

+ * Example:

{@code
+ *    Wheel names = new Wheel();
+ *    names.add("Chocolate");
+ *    names.add("Peanut Butter");
+ *    for(int i = 0; i < 6; i++){
+ *      String name = names.next();
+ *      System.out.print(name + " ");
+ *    }
+ * }
+ * Would result in:

+ * Chocolate Peanut Butter Chocolate Peanut Butter Chocolate Peanut Butter + * + * @param The kind of things that are in the wheel + */ +public class Wheel { + private List list = new ArrayList<>(); + private int index = 0; + + @SafeVarargs + public Wheel(T... loadWith) { + for (T t : loadWith) { + add(t); + } + } + + public Wheel() { + } + + public void add(T i) { + list.add(i); + } + + public T next() { + assertNonEmpty(); + if (index >= list.size()) { + index = 0; + } + return list.get(index++); + } + + private void assertNonEmpty() { + if (list.isEmpty()) { + String message = "I call shenanigans!!!\nThis Wheel is empty\nYou can NOT get something from the Wheel before you've added anything to it."; + throw new RuntimeException(message); + } + } + + public T getRandomFrom() { + assertNonEmpty(); + int index = NumberUtils.getRandomInt(0, list.size()); + return list.get(index); + } + + public void empty() { + list.clear(); + index = 0; + } +} diff --git a/src/org/teachingextensions/logo/shapes/Circle.java b/src/main/java/org/teachingextensions/logo/shapes/Circle.java similarity index 96% rename from src/org/teachingextensions/logo/shapes/Circle.java rename to src/main/java/org/teachingextensions/logo/shapes/Circle.java index a79160c..2c095b7 100644 --- a/src/org/teachingextensions/logo/shapes/Circle.java +++ b/src/main/java/org/teachingextensions/logo/shapes/Circle.java @@ -10,7 +10,7 @@ import org.teachingextensions.windows.ProgramWindow; /** - * + * A blue circle * The Circle allows you to draw circles on the window */ public class Circle implements Paintable diff --git a/src/org/teachingextensions/logo/shapes/Text.java b/src/main/java/org/teachingextensions/logo/shapes/Text.java similarity index 91% rename from src/org/teachingextensions/logo/shapes/Text.java rename to src/main/java/org/teachingextensions/logo/shapes/Text.java index 709777e..9e0cc0c 100644 --- a/src/org/teachingextensions/logo/shapes/Text.java +++ b/src/main/java/org/teachingextensions/logo/shapes/Text.java @@ -10,7 +10,7 @@ import org.teachingextensions.logo.TurtlePanel; /** - * + * A sheet of paper with text on it * Text allows you to write text on the window */ public class Text implements Paintable @@ -29,8 +29,9 @@ public Text(String string) * * @param x * the X position - * @param + * @param y * the Y position + * @return the same Text that you are working with */ public Text setTopLeft(int x, int y) { diff --git a/src/org/teachingextensions/logo/utils/Sounds.java b/src/main/java/org/teachingextensions/logo/utils/Sounds.java similarity index 63% rename from src/org/teachingextensions/logo/utils/Sounds.java rename to src/main/java/org/teachingextensions/logo/utils/Sounds.java index e865039..9196e92 100644 --- a/src/org/teachingextensions/logo/utils/Sounds.java +++ b/src/main/java/org/teachingextensions/logo/utils/Sounds.java @@ -3,13 +3,13 @@ import java.awt.Toolkit; /** - * + * A speaker with sound waves * Sounds allows you to play sounds, like a 'beep' */ public class Sounds { /** - * Plays a beep through your speakers. BEEP!
+ * Plays a beep through your speakers. BEEP!
* Example: {@code Sounds.playBeep()} */ public static void playBeep() diff --git a/src/org/teachingextensions/logo/utils/TortoiseUtils.java b/src/main/java/org/teachingextensions/logo/utils/TortoiseUtils.java similarity index 65% rename from src/org/teachingextensions/logo/utils/TortoiseUtils.java rename to src/main/java/org/teachingextensions/logo/utils/TortoiseUtils.java index d6621b2..a04775e 100644 --- a/src/org/teachingextensions/logo/utils/TortoiseUtils.java +++ b/src/main/java/org/teachingextensions/logo/utils/TortoiseUtils.java @@ -5,52 +5,46 @@ import org.teachingextensions.approvals.lite.util.ObjectUtils; import org.teachingextensions.logo.Turtle; -public class TortoiseUtils -{ +public class TortoiseUtils { private static Turtle TURTLE = new Turtle(); + /** * Captures an image of the result of your program and displays it to you */ - public static void verify() - { - try - { + public static void verify() { + try { Approvals.verify(TURTLE.getImage()); - } - catch (Exception e) - { + } catch (Exception e) { throw ObjectUtils.throwAsError(e); - } - finally - { + } finally { TortoiseUtils.resetTurtle(); } } - public static void resetTurtle() - { + + public static void resetTurtle() { TURTLE = new Turtle(); } - public static void setOrientation(int x, int y, int angle) - { + + public static void setOrientation(int x, int y, int angle) { TURTLE.setX(x); TURTLE.setY(y); TURTLE.setAngleInDegrees(angle); } - public static Turtle getTurtle() - { + + public static Turtle getTurtle() { return TURTLE; } - public static void setTurtle(Turtle turtle) - { + + public static void setTurtle(Turtle turtle) { TortoiseUtils.TURTLE = turtle; } - public static void verifyForOs() - { + + public static void verifyForOs() { ApprovalResults.UniqueForOs(); verify(); } - public static void writeMessage(String string, int x, int y) - { + + public static void writeMessage(String string, int x, int y) { TURTLE.setX(x); TURTLE.setY(y); TURTLE.print(string); diff --git a/src/org/teachingextensions/setup/CommandLineUtils.java b/src/main/java/org/teachingextensions/setup/CommandLineUtils.java similarity index 50% rename from src/org/teachingextensions/setup/CommandLineUtils.java rename to src/main/java/org/teachingextensions/setup/CommandLineUtils.java index bacad17..37fab17 100644 --- a/src/org/teachingextensions/setup/CommandLineUtils.java +++ b/src/main/java/org/teachingextensions/setup/CommandLineUtils.java @@ -4,17 +4,13 @@ import org.teachingextensions.approvals.lite.util.ObjectUtils; -public class CommandLineUtils -{ - public static void launch(String commandLine, String... formattingArguments) - { - try - { - String command = String.format(commandLine, (Object[]) formattingArguments); - Process exec = Runtime.getRuntime().exec(command); - } - catch (IOException e) - { +public class CommandLineUtils { + public static void launch(String commandLine, String... formattingArguments) { + try { + String command = String.format(commandLine, + (Object[]) formattingArguments); + Runtime.getRuntime().exec(command); + } catch (IOException e) { ObjectUtils.throwAsError(e); } } diff --git a/src/org/teachingextensions/setup/MacThumbDriveInstaller.java b/src/main/java/org/teachingextensions/setup/MacThumbDriveInstaller.java similarity index 65% rename from src/org/teachingextensions/setup/MacThumbDriveInstaller.java rename to src/main/java/org/teachingextensions/setup/MacThumbDriveInstaller.java index 5f9c4d3..e322ea9 100644 --- a/src/org/teachingextensions/setup/MacThumbDriveInstaller.java +++ b/src/main/java/org/teachingextensions/setup/MacThumbDriveInstaller.java @@ -8,44 +8,44 @@ import org.teachingextensions.approvals.lite.util.ObjectUtils; import org.teachingextensions.approvals.lite.util.io.ZipUtils; -public class MacThumbDriveInstaller -{ - public void install() throws Exception - { +public class MacThumbDriveInstaller { + public void install() throws Exception { installEclipse(); installWorkspace(); launch(); } - private void launch() - { + + private void launch() { String command = "java -jar TKP_Launcher.jar"; - try - { - Process exec = Runtime.getRuntime().exec(command, null, - new File(getDesktop().getAbsolutePath() + "/TeachingKidsProgramming.Java-master")); - } - catch (IOException e) - { + try { + Runtime.getRuntime().exec( + command, + null, + new File(getDesktop().getAbsolutePath() + + "/TeachingKidsProgramming.Java-master")); + } catch (IOException e) { ObjectUtils.throwAsError(e); } } - private void installWorkspace() throws IOException - { + + private void installWorkspace() throws IOException { File zipFile = new File("./TeachingKidsProgramming.Java-master.zip"); File unzipTo = getDesktop(); System.out.println("Unzip to " + unzipTo); ZipUtils.doUnzip(unzipTo, zipFile); } - public File getDesktop() - { + + public File getDesktop() { File homeDirectory = FileSystemView.getFileSystemView().getHomeDirectory(); File unzipTo = new File(homeDirectory.getAbsolutePath() + "/Desktop"); return unzipTo; } - private void installEclipse() throws Exception - { + + private void installEclipse() throws Exception { File installDir = new File("/Applications/Eclipse"); - if (installDir.exists()) { return; } + if (installDir.exists()) { + return; + } ZipUtils.doUnzip(new File("/Applications"), new File("./eclipse-mac.zip")); } } diff --git a/src/org/teachingextensions/setup/SetupConfig.java b/src/main/java/org/teachingextensions/setup/SetupConfig.java similarity index 99% rename from src/org/teachingextensions/setup/SetupConfig.java rename to src/main/java/org/teachingextensions/setup/SetupConfig.java index 5c245e4..aa79ec6 100644 --- a/src/org/teachingextensions/setup/SetupConfig.java +++ b/src/main/java/org/teachingextensions/setup/SetupConfig.java @@ -1,8 +1,9 @@ package org.teachingextensions.setup; +import org.teachingextensions.setup.SetupValidator.SetupCheckPoints; + import org.teachingextensions.approvals.lite.util.SystemUtils; import org.teachingextensions.approvals.lite.util.servlets.ValidationError; -import org.teachingextensions.setup.SetupValidator.SetupCheckPoints; public class SetupConfig { diff --git a/src/org/teachingextensions/setup/SetupValidator.java b/src/main/java/org/teachingextensions/setup/SetupValidator.java similarity index 99% rename from src/org/teachingextensions/setup/SetupValidator.java rename to src/main/java/org/teachingextensions/setup/SetupValidator.java index 0c58e58..e363b5e 100644 --- a/src/org/teachingextensions/setup/SetupValidator.java +++ b/src/main/java/org/teachingextensions/setup/SetupValidator.java @@ -3,10 +3,11 @@ import java.io.File; import java.io.IOException; +import org.teachingextensions.windows.MessageBox; + import org.teachingextensions.approvals.lite.util.ObjectUtils; import org.teachingextensions.approvals.lite.util.io.FileUtils; import org.teachingextensions.approvals.lite.util.io.ZipUtils; -import org.teachingextensions.windows.MessageBox; public class SetupValidator { diff --git a/src/org/teachingextensions/setup/ThumbDriveInstaller.java b/src/main/java/org/teachingextensions/setup/ThumbDriveInstaller.java similarity index 100% rename from src/org/teachingextensions/setup/ThumbDriveInstaller.java rename to src/main/java/org/teachingextensions/setup/ThumbDriveInstaller.java diff --git a/src/org/teachingextensions/setup/WindowsThumbDriveInstaller.java b/src/main/java/org/teachingextensions/setup/WindowsThumbDriveInstaller.java similarity index 100% rename from src/org/teachingextensions/setup/WindowsThumbDriveInstaller.java rename to src/main/java/org/teachingextensions/setup/WindowsThumbDriveInstaller.java diff --git a/src/org/teachingextensions/simpleparser/Parser.java b/src/main/java/org/teachingextensions/simpleparser/Parser.java similarity index 90% rename from src/org/teachingextensions/simpleparser/Parser.java rename to src/main/java/org/teachingextensions/simpleparser/Parser.java index a759cc9..1259fa0 100644 --- a/src/org/teachingextensions/simpleparser/Parser.java +++ b/src/main/java/org/teachingextensions/simpleparser/Parser.java @@ -3,27 +3,31 @@ import java.lang.reflect.Field; import java.util.List; -import org.teachingextensions.approvals.lite.util.ObjectUtils; -import org.teachingextensions.approvals.lite.util.io.FileUtils; import org.teachingextensions.approvals.lite.util.lambda.Function1; import org.teachingextensions.approvals.lite.util.lambda.Query; +import org.teachingextensions.approvals.lite.util.ObjectUtils; +import org.teachingextensions.approvals.lite.util.io.FileUtils; + public class Parser { /** * Parses a template with a data object to create a string * - *

Example: Words data = new Words ();
- * data.action = "Shake";
- * data.weapon = "spear";
- * String greeting = Parser.parse("Captain {action}{weapon}!!!",data)
- * + *
Example:
{@code
+   * Words data = new Words();
+   * data.action = "Shake";
+   * data.weapon = "spear";
+   * String greeting = Parser.parse("Captain {action}{weapon}!!!", data);
+   * }
+ * * Captain Shakespear!!! * * @param text * The template with the fields from the data object surrounded in {curlyBraces} * @param data * an object whose fields will be merged with the template during parsing + * @return the completed string */ public static String parse(String text, Object data) { @@ -31,7 +35,7 @@ public static String parse(String text, Object data) } public static String parse(String text, String startCharacter, String endCharacter, Object data) { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); String temp = text; int start = temp.indexOf(startCharacter); while (start > 0) diff --git a/src/org/teachingextensions/utils/Viewer.java b/src/main/java/org/teachingextensions/utils/Viewer.java similarity index 100% rename from src/org/teachingextensions/utils/Viewer.java rename to src/main/java/org/teachingextensions/utils/Viewer.java diff --git a/src/main/java/org/teachingextensions/utils/VirtualProctor.java b/src/main/java/org/teachingextensions/utils/VirtualProctor.java new file mode 100644 index 0000000..d6bf083 --- /dev/null +++ b/src/main/java/org/teachingextensions/utils/VirtualProctor.java @@ -0,0 +1,70 @@ +package org.teachingextensions.utils; + +import java.io.File; + +import org.teachingextensions.approvals.lite.util.StringUtils; +import org.teachingextensions.approvals.lite.util.io.FileUtils; + +/** + * A teacher at a blackboard Virtual + * Proctor allows you to see what all the TKPJava coders are making + */ +public class VirtualProctor { + public static class internals { + private static final String FILE_NAME = ".virtual_proctor.txt"; + + public static String getName() { + String name = getCustomName(); + if (name == null) { + name = getComputerName(); + } + if (name == null) { + name = getUserName(); + } + return name; + } + + private static String getCustomName() { + File file = new File(FILE_NAME); + if (file.exists()) { + return FileUtils.readFileWithSuppressedExceptions(file).trim(); + } + return null; + } + + public static String getComputerName() { + return System.getenv("COMPUTERNAME"); + } + + public static String getUserName() { + return System.getenv("USER"); + } + + public static void resetName() { + File file = new File(FILE_NAME); + if (file.exists()) { + file.delete(); + } + } + + /** + * Allows you to set the displayed username in Virtual Proctor + *
Example: {@code virtualProctor.setName(name)}
+ * + * @param name + * A name that is displayed for the user in the Virtual + * Proctor client + */ + public static void setName(String name) { + if (StringUtils.isEmpty(name)) { + return; + } + FileUtils.writeFileQuietly(new File(FILE_NAME), name); + } + } + + public static void setName(String name) { + internals.setName(name); + } +} diff --git a/src/org/teachingextensions/windows/GraphicsWindow.java b/src/main/java/org/teachingextensions/windows/GraphicsWindow.java similarity index 100% rename from src/org/teachingextensions/windows/GraphicsWindow.java rename to src/main/java/org/teachingextensions/windows/GraphicsWindow.java diff --git a/src/org/teachingextensions/windows/LeftClickMouseAdapter.java b/src/main/java/org/teachingextensions/windows/LeftClickMouseAdapter.java similarity index 100% rename from src/org/teachingextensions/windows/LeftClickMouseAdapter.java rename to src/main/java/org/teachingextensions/windows/LeftClickMouseAdapter.java diff --git a/src/main/java/org/teachingextensions/windows/MessageBox.java b/src/main/java/org/teachingextensions/windows/MessageBox.java new file mode 100644 index 0000000..0538b71 --- /dev/null +++ b/src/main/java/org/teachingextensions/windows/MessageBox.java @@ -0,0 +1,77 @@ +package org.teachingextensions.windows; + +import javax.swing.JOptionPane; + +import org.teachingextensions.approvals.lite.util.NumberUtils; + +/** + * A message box
+ *
+ *
+ *
+ *
+ * MessageBox is a pop up window
+ * Use it to collect numerical input from the user
+ * Or to display a message for the user to read.
+ */ +public class MessageBox { + private static MessageBoxInstance messageBox = new MessageBoxInstance(); + + /** + * Prints a request for a numerical input to the window.
+ * Example: + * {@code int cookies = MessageBox.askForNumericalInput("How many cookies would you like?");} + * + * @param message + * the text to be displayed + * @return the user input + */ + public static int askForNumericalInput(String message) { + return messageBox.askForNumericalInput(message); + } + + /** + * Prints a request for a text input to the window.
+ * Example: + * {@code String name = MessageBox.askForTextInput("What is your nickname?");} + * + * @param message + * the text to be displayed + * @return the user input + */ + public static String askForTextInput(String message) { + return messageBox.askForTextInput(message); + } + + /** + * Prints the message to the window.
+ * Example: {@code MessageBox.showMessage("Girl programmers rule!");} + * + * @param message + * the text to be displayed + */ + public static void showMessage(String message) { + messageBox.showMessage(message); + } + + public static void mock(MessageBoxInstance messageBoxMock) { + messageBox = messageBoxMock; + } + + public static class MessageBoxInstance { + public int askForNumericalInput(String message) { + String input = askForTextInput(message); + return NumberUtils.load(input, 0); + } + + public String askForTextInput(String message) { + return JOptionPane.showInputDialog(message); + } + + public void showMessage(String message) { + JOptionPane.showMessageDialog(null, message); + } + } +} diff --git a/src/org/teachingextensions/windows/MouseLeftClickListener.java b/src/main/java/org/teachingextensions/windows/MouseLeftClickListener.java similarity index 100% rename from src/org/teachingextensions/windows/MouseLeftClickListener.java rename to src/main/java/org/teachingextensions/windows/MouseLeftClickListener.java diff --git a/src/org/teachingextensions/windows/MouseRightClickListener.java b/src/main/java/org/teachingextensions/windows/MouseRightClickListener.java similarity index 100% rename from src/org/teachingextensions/windows/MouseRightClickListener.java rename to src/main/java/org/teachingextensions/windows/MouseRightClickListener.java diff --git a/src/org/teachingextensions/windows/ProgramWindow.java b/src/main/java/org/teachingextensions/windows/ProgramWindow.java similarity index 68% rename from src/org/teachingextensions/windows/ProgramWindow.java rename to src/main/java/org/teachingextensions/windows/ProgramWindow.java index 8e6f79f..d876659 100644 --- a/src/org/teachingextensions/windows/ProgramWindow.java +++ b/src/main/java/org/teachingextensions/windows/ProgramWindow.java @@ -4,6 +4,7 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.RenderingHints; import java.util.ArrayList; import javax.swing.JFrame; @@ -17,13 +18,13 @@ import org.teachingextensions.logo.VirtualProctorWeb; /** - * - * Program Window allows you to change the color of the background and more... + * A window image Program Window + * allows you to change the color of the background and more... */ @SuppressWarnings({"serial"}) public class ProgramWindow extends JPanel { - public ArrayList additional = new ArrayList(); + public ArrayList additional = new ArrayList<>(); public ProgramWindow(String title) { this(); @@ -44,10 +45,12 @@ public static void createStandardFrame(JFrame frame) public void paint(Graphics g) { super.paint(g); + Graphics2D g2d = configureGraphics2D(g); for (Paintable p : additional) { - p.paint((Graphics2D) g, this); + p.paint(g2d, this); } + g2d.dispose(); } public void setColor(Color backgroundColor) { @@ -75,4 +78,13 @@ public void setBackgroundImage(String url) { addPaintable(new ImageBackground(url)); } + public static Graphics2D configureGraphics2D(Graphics g) + { + Graphics2D g2d = (Graphics2D) g.create(); + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); + g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); + g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); + return g2d; + } } diff --git a/src/org/teachingextensions/windows/RightClickMouseAdapter.java b/src/main/java/org/teachingextensions/windows/RightClickMouseAdapter.java similarity index 100% rename from src/org/teachingextensions/windows/RightClickMouseAdapter.java rename to src/main/java/org/teachingextensions/windows/RightClickMouseAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/AdLibs.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibs.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/AdLibs.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibs.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/AdLibsQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibsQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/AdLibsQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibsQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java similarity index 90% rename from src/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java index 863d335..a9d8199 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/AdLibsRtf.java @@ -18,7 +18,7 @@ public static void main(String[] args) word.adverb = MessageBox.askForTextInput("What is the adverb?"); word.edVerb = MessageBox.askForTextInput("What is the -ed verb?"); word.bodyPart = MessageBox.askForTextInput("What is the body part?"); - String currentStory = Parser.parseRtfFile("view.rtf", word); + String currentStory = Parser.parseRtfFile("documents/view.rtf", word); Viewer.displayRtfFile(currentStory); } } \ No newline at end of file diff --git a/src/org/teachingkidsprogramming/recipes/completed/BackgroundPhoto.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/BackgroundPhoto.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/BackgroundPhoto.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/BackgroundPhoto.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java similarity index 99% rename from src/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java index c217544..8774d86 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/ChooseYourOwnAdventure.java @@ -2,11 +2,12 @@ import java.awt.Color; -import org.teachingextensions.approvals.lite.util.ThreadUtils; import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.windows.MessageBox; +import org.teachingextensions.approvals.lite.util.ThreadUtils; + public class ChooseYourOwnAdventure { public static void main(String[] args) diff --git a/src/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java similarity index 96% rename from src/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java index 154b8a2..f51a9d9 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/ConnectTheDots.java @@ -15,7 +15,7 @@ public class ConnectTheDots implements MouseRightClickListener, MouseLeftClickLi public static void main(String[] args) { //Create new a 'Connect the Dots' object. - ConnectTheDots dots = new ConnectTheDots(); + new ConnectTheDots(); } public ConnectTheDots() { @@ -31,7 +31,8 @@ public ConnectTheDots() prepareColorPalette(); } private static void prepareColorPalette() - { // ------------- Recipe for prepareColorPalette (HINT: Use PenColors) + { + // ------------- Recipe for prepareColorPalette (HINT: Use PenColors) // // Add red to the color wheel ColorWheel.addColor(PenColors.Reds.Red); diff --git a/src/org/teachingkidsprogramming/recipes/completed/DigiFlower.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/DigiFlower.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/DigiFlower.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/DigiFlower.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/FizzBuzz.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/FizzBuzz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/FizzBuzz.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/FizzBuzz.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDD.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDD.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDD.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDD.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/FourSquare.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/FourSquare.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/FourSquare.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/FourSquare.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/HiLow.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/HiLow.java similarity index 99% rename from src/org/teachingkidsprogramming/recipes/completed/HiLow.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/HiLow.java index 8376797..62a74cb 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/HiLow.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/HiLow.java @@ -1,8 +1,9 @@ package org.teachingkidsprogramming.recipes.completed; -import org.teachingextensions.approvals.lite.util.NumberUtils; import org.teachingextensions.windows.MessageBox; +import org.teachingextensions.approvals.lite.util.NumberUtils; + public class HiLow { public static void main(String[] args) diff --git a/src/org/teachingkidsprogramming/recipes/completed/Houses.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/Houses.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/Houses.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/Houses.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/KnottedRing.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/KnottedRing.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/KnottedRing.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/KnottedRing.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java similarity index 97% rename from src/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java index 6b19fc9..e298eaf 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/ManyAnimals.java @@ -1,10 +1,10 @@ package org.teachingkidsprogramming.recipes.completed; -import java.util.ArrayList; - import org.teachingextensions.logo.MultiTurtlePanel; import org.teachingextensions.logo.Turtle; +import java.util.ArrayList; + public class ManyAnimals { public ManyAnimals() @@ -13,12 +13,10 @@ public ManyAnimals() } //Create a container to hold your turtles HINT: Use ArrayList --#2.1 public ArrayList turtles = new ArrayList(); - //Create a window to show your turtles HINT: Use MultiTurtlePanel --#1.1 + //Create a window to show your turtles HINT: Use MultiTurtlePanel --#1 public MultiTurtlePanel mt = new MultiTurtlePanel(); private void showSomeTurtles() { - //Show your panel --#1.2 - mt.showPanel(); //Set the size to 100 --#5.4 int size = 100; //Add your three turtles HINT: FOR loop which 'does an action' --#2.2 diff --git a/src/org/teachingkidsprogramming/recipes/completed/PentagonCrazy.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/PentagonCrazy.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/PentagonCrazy.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/PentagonCrazy.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java similarity index 99% rename from src/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java index 4e0b7af..3a7dc60 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleBubble.java @@ -1,12 +1,13 @@ package org.teachingkidsprogramming.recipes.completed; -import org.teachingextensions.approvals.lite.util.NumberUtils; import org.teachingextensions.logo.ColorWheel; import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.shapes.Circle; import org.teachingextensions.windows.MouseLeftClickListener; import org.teachingextensions.windows.ProgramWindow; +import org.teachingextensions.approvals.lite.util.NumberUtils; + public class SimpleBubble implements MouseLeftClickListener { private ProgramWindow programWindow; diff --git a/src/org/teachingkidsprogramming/recipes/completed/SimpleBubbleQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleBubbleQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/SimpleBubbleQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleBubbleQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/SimplePuzzle.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimplePuzzle.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/SimplePuzzle.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/SimplePuzzle.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java similarity index 83% rename from src/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java index 51ab6a6..1e6a1ec 100644 --- a/src/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/completed/SimpleSquare.java @@ -3,17 +3,14 @@ import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; -public class SimpleSquare -{ - public static void main(String[] args) throws Exception - { +public class SimpleSquare { + public static void main(String[] args) throws Exception { // Show the tortoise --#1 Tortoise.show(); // Make the tortoise move as fast as possible --#6 Tortoise.setSpeed(10); // Do the following 4 times --#5.1 - for (int i = 1; i <= 4; i++) - { + for (int i = 1; i <= 4; i++) { // Change the pen color of the line the tortoise draws to "blue" --#4 Tortoise.setPenColor(PenColors.Blues.Blue); // Move the tortoise 50 pixels --#2 diff --git a/src/org/teachingkidsprogramming/recipes/completed/SpiderWeb.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/SpiderWeb.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/SpiderWeb.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/SpiderWeb.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/Spiral.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/Spiral.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/Spiral.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/Spiral.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/TriangleShell.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/TriangleShell.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/TriangleShell.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/TriangleShell.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/TurtleTree.java b/src/main/java/org/teachingkidsprogramming/recipes/completed/TurtleTree.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/TurtleTree.java rename to src/main/java/org/teachingkidsprogramming/recipes/completed/TurtleTree.java diff --git a/src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java b/src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java rename to src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicHolidayCard.java diff --git a/src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java b/src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java rename to src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SmallBasicTicTacToe.java diff --git a/src/org/teachingkidsprogramming/recipes/inDevelopment/SpiderWebQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SpiderWebQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/inDevelopment/SpiderWebQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/inDevelopment/SpiderWebQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizAdapter.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizAdapter.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizAdapter.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java similarity index 71% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java index c2a29ce..569638b 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/AdLibsQuizGrader.java @@ -5,50 +5,52 @@ import javax.swing.JPanel; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.simpleparser.Parser; import org.teachingkidsprogramming.recipes.quizzes.graders.AdLibsQuizAdapter.Pieces; -public class AdLibsQuizGrader implements Paintable -{ - private static class Model - { +public class AdLibsQuizGrader implements Paintable { + private static class Model { + @SuppressWarnings("unused") public String three; - public Model(String three) - { + + public Model(String three) { this.three = three; } } + private boolean[] answers; public static int TURTLE_SPEED = 9; private AdLibsQuizAdapter quiz; - private void displayScreen() - { + + private void displayScreen() { QuizUtils.prepareScoringScreen(answers, this, TURTLE_SPEED); } - public void grade(AdLibsQuizAdapter quiz) - { + + public void grade(AdLibsQuizAdapter quiz) { this.quiz = quiz; - answers = new boolean[]{grade1You(), grade2Won(), grade3The(), grade4Game()}; + answers = new boolean[] { grade1You(), grade2Won(), grade3The(), + grade4Game() }; displayScreen(); } - public void paint(Graphics2D g, JPanel caller) - { + + @Override + public void paint(Graphics2D g, JPanel caller) { QuizUtils.displayScores(g, 300, answers); Tortoise.hide(); drawRewardShape(g); } - public void drawRewardShape(Graphics2D g) - { + + public void drawRewardShape(Graphics2D g) { drawYou(g); drawWin(g); drawThe(g); drawGame(g); } - private void drawGame(Graphics2D g) - { + + private void drawGame(Graphics2D g) { quiz.template4 = ""; Pieces pieces = new Pieces(); quiz.question4(pieces); @@ -56,44 +58,44 @@ private void drawGame(Graphics2D g) String word = Parser.parse(quiz.template4, pieces); drawWord(g, word, 0, 4, true); } - private void drawThe(Graphics2D g) - { + + private void drawThe(Graphics2D g) { quiz.word3 = ""; Pieces model = new Pieces(); model.middle = "H"; quiz.question3("T{middle}E", model); drawWord(g, quiz.word3, 3, 2, false); } - private void drawWin(Graphics2D g) - { + + private void drawWin(Graphics2D g) { quiz.word2 = "WO"; quiz.question2("n"); drawWord(g, quiz.word2, 1, 0, false); } - private void drawWord(Graphics2D g, String word, int x, int y, boolean horizontal) - { + + private void drawWord(Graphics2D g, String word, int x, int y, + boolean horizontal) { char[] letters = word.toUpperCase().toCharArray(); int dx = horizontal ? 1 : 0; int dy = horizontal ? 0 : 1; - for (int i = 0; i < letters.length; i++) - { + for (int i = 0; i < letters.length; i++) { char c = letters[i]; drawLetter(getPosition(x + dx * i), getPosition(y + dy * i), c, g); } } - private int getPosition(int i) - { + + private int getPosition(int i) { return 100 + i * 53; } - private void drawYou(Graphics2D g) - { + + private void drawYou(Graphics2D g) { quiz.word1 = "NOT"; quiz.question1("y", "u"); drawWord(g, quiz.word1, 0, 1, true); } - private void drawLetter(int x, int y, char c, Graphics2D g) - { - g.setColor(Colors.Browns.BurlyWood); + + private void drawLetter(int x, int y, char c, Graphics2D g) { + g.setColor(PenColors.Browns.BurlyWood); g.drawRect(x, y, 50, 50); g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 36)); int charWidth = g.getFontMetrics().charWidth(c); @@ -102,26 +104,26 @@ private void drawLetter(int x, int y, char c, Graphics2D g) int textX = x + (50 - charWidth) / 2; g.drawString("" + c, textX, textY); } - private boolean grade1You() - { + + private boolean grade1You() { quiz.word1 = "fake"; quiz.question1("f", "o"); return "foo".equals(quiz.word1); } - private boolean grade2Won() - { + + private boolean grade2Won() { quiz.word2 = "passe"; quiz.question2("d"); return "passed".equals(quiz.word2); } - private boolean grade3The() - { + + private boolean grade3The() { quiz.word3 = "fake"; quiz.question3("12{three}4", new Model("3")); return "1234".equals(quiz.word3); } - private boolean grade4Game() - { + + private boolean grade4Game() { quiz.template4 = "fake"; quiz.question4(new Pieces()); return "g{middle}e".equals(quiz.template4); diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java similarity index 97% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java index 1238fad..c3d74e3 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HiLowQuizGrader.java @@ -4,8 +4,8 @@ import javax.swing.JPanel; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.utils.TortoiseUtils; import org.teachingextensions.windows.MessageBox; @@ -35,7 +35,7 @@ private void drawRewardShape() 70, 85, 25, 43, 40, 18, 26, 50, 113, 25, 85, 40, 30, 30, 20, 20, 20, 10, 20, 10, 10, 20, 10, 10, 30, 30, 60, 183}; Tortoise.setX(20); - Tortoise.setPenColor(Colors.Greens.LawnGreen); + Tortoise.setPenColor(PenColors.Greens.LawnGreen); for (int i = 0; i < lengths.length; i++) { Tortoise.turn(angles[i]); diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizAdapter.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizAdapter.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizAdapter.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java similarity index 94% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java index e90f667..1bb82fa 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/HousesQuizGrader.java @@ -4,13 +4,14 @@ import javax.swing.JPanel; -import org.teachingextensions.approvals.lite.util.NumberUtils; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; +import org.teachingextensions.approvals.lite.util.NumberUtils; + public class HousesQuizGrader implements Paintable { private boolean[] answers; @@ -97,7 +98,7 @@ private void drawTriangle() for (int i = 0; i < 2; i++) { Tortoise.setPenWidth(3); - Tortoise.setPenColor(Colors.Purples.Lavender); + Tortoise.setPenColor(PenColors.Purples.Lavender); quiz.question3(); quiz.question4(); Tortoise.turn(180); @@ -128,7 +129,7 @@ private void moveMedium() { quiz.question2(); Tortoise.setPenWidth(2); - Tortoise.setPenColor(Colors.Blues.LightBlue); + Tortoise.setPenColor(PenColors.Blues.LightBlue); quiz.question4(); Tortoise.turn(180); quiz.question4(); @@ -138,7 +139,7 @@ private void moveMedium() private void drawSmallestLine() { Tortoise.setPenWidth(1); - Tortoise.setPenColor(Colors.Blues.PowderBlue); + Tortoise.setPenColor(PenColors.Blues.PowderBlue); quiz.question1(); quiz.question4(); Tortoise.turn(360.0 / 6); diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/MessageBoxMock.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/MessageBoxMock.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/MessageBoxMock.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/MessageBoxMock.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java similarity index 95% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java index 6cac315..c6e129b 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonCrazyQuizGrader.java @@ -5,15 +5,16 @@ import javax.swing.JPanel; -import org.teachingextensions.approvals.lite.util.NumberUtils; import org.teachingextensions.logo.ColorWheel; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; -import org.teachingextensions.logo.Wheel; import org.teachingextensions.logo.Turtle; +import org.teachingextensions.logo.Wheel; import org.teachingextensions.logo.utils.TortoiseUtils; +import org.teachingextensions.approvals.lite.util.NumberUtils; + public class PentagonCrazyQuizGrader implements Paintable { private boolean[] answers; @@ -74,7 +75,7 @@ private boolean grade3Lime() { ColorWheel.removeAllColors(); quiz.question3(); - return Colors.Greens.Lime.equals(getSafeColor()); + return PenColors.Greens.Lime.equals(getSafeColor()); } public Color getSafeColor() { @@ -84,14 +85,14 @@ public Color getSafeColor() } catch (Exception e) { - return Colors.Yellows.Yellow; + return PenColors.Yellows.Yellow; } } private boolean grade4Red() { ColorWheel.removeAllColors(); quiz.question4(); - return Colors.Reds.Red.equals(getSafeColor()); + return PenColors.Reds.Red.equals(getSafeColor()); } public void setColors() { diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonQuizAdapter.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonQuizAdapter.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonQuizAdapter.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/PentagonQuizAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/QuizUtils.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/QuizUtils.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/QuizUtils.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/QuizUtils.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizAdapter.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizAdapter.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizAdapter.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizGrader.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleBubbleQuizGrader.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java similarity index 99% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java index 561118c..7044600 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SimpleSquareQuizGrader.java @@ -5,11 +5,12 @@ import javax.swing.JPanel; -import org.teachingextensions.approvals.lite.util.NumberUtils; import org.teachingextensions.logo.Paintable; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; +import org.teachingextensions.approvals.lite.util.NumberUtils; + public class SimpleSquareQuizGrader implements Paintable { private boolean[] answers; diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java similarity index 93% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java index 3f9cb83..a75e5e8 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SpiderWebQuizGrader.java @@ -5,8 +5,8 @@ import javax.swing.JPanel; import org.teachingextensions.logo.ColorWheel; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -37,9 +37,9 @@ public void initialize(SpiderQuiz quiz) TortoiseUtils.setOrientation(150, 200, 0); Tortoise.setPenWidth(15); ColorWheel.removeAllColors(); - ColorWheel.addColor(Colors.Grays.Black); - ColorWheel.addColor(Colors.Whites.White); - Tortoise.getBackgroundWindow().setBackground(Colors.Grays.Silver); + ColorWheel.addColor(PenColors.Grays.Black); + ColorWheel.addColor(PenColors.Whites.White); + Tortoise.getBackgroundWindow().setBackground(PenColors.Grays.Silver); quiz.number = 16; quiz.length = 15; } diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/SquareQuiz.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SquareQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/SquareQuiz.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/SquareQuiz.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizAdapter.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizAdapter.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizAdapter.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizAdapter.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java similarity index 96% rename from src/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java rename to src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java index ef02eac..6d3bcc5 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java +++ b/src/main/java/org/teachingkidsprogramming/recipes/quizzes/graders/TreeQuizGrader.java @@ -6,8 +6,8 @@ import javax.swing.JPanel; -import org.teachingextensions.logo.Colors; import org.teachingextensions.logo.Paintable; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -67,7 +67,7 @@ public void drawRewardShape() TortoiseUtils.setOrientation(xTop - 15, yTop + 15, 90); quiz.length = 15; quiz.question1(); - Tortoise.setPenColor(Colors.Greens.Lime); + Tortoise.setPenColor(PenColors.Greens.Lime); Tortoise.setPenWidth(2); int[] turns = { 0, 90, 0, -90, 90 - 36, -90, 0, 90, -90, 0, 0, 0, -90, -90, 0, 0, 90, 0, 0, 90, 0, 0, 0, 0, 90, 90, -90, @@ -101,7 +101,7 @@ else if (turns[i] != 90) } private void drawMaze(Graphics2D g) { - g.setColor(Colors.Grays.DarkGray); + g.setColor(PenColors.Grays.DarkGray); g.setStroke(new BasicStroke(4, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); int[][] verticalLines = { {1, 4}, {0, 2, 3, 1}, {2, 1}, {0, 1}, {1, 3}, {1, 2}, {2, 1}, new int[0], {1, 1, 3, 2}, {2, 1}, {0, 4}}; diff --git a/src/org/teachingkidsprogramming/section01forloops/DeepDive01ForLoops.java b/src/main/java/org/teachingkidsprogramming/section01forloops/DeepDive01ForLoops.java similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/DeepDive01ForLoops.java rename to src/main/java/org/teachingkidsprogramming/section01forloops/DeepDive01ForLoops.java diff --git a/src/org/teachingkidsprogramming/section01forloops/SimpleSquare.java b/src/main/java/org/teachingkidsprogramming/section01forloops/SimpleSquare.java similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/SimpleSquare.java rename to src/main/java/org/teachingkidsprogramming/section01forloops/SimpleSquare.java diff --git a/src/org/teachingkidsprogramming/section01forloops/SimpleSquareQuiz.java b/src/main/java/org/teachingkidsprogramming/section01forloops/SimpleSquareQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/SimpleSquareQuiz.java rename to src/main/java/org/teachingkidsprogramming/section01forloops/SimpleSquareQuiz.java diff --git a/src/org/teachingkidsprogramming/section01forloops/Spiral.java b/src/main/java/org/teachingkidsprogramming/section01forloops/Spiral.java similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/Spiral.java rename to src/main/java/org/teachingkidsprogramming/section01forloops/Spiral.java diff --git a/src/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java b/src/main/java/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java similarity index 99% rename from src/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java rename to src/main/java/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java index 4ff99ae..f7b515e 100644 --- a/src/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java +++ b/src/main/java/org/teachingkidsprogramming/section02methods/DeepDive02Variables.java @@ -5,6 +5,7 @@ import org.junit.Test; @Ignore +@SuppressWarnings("unused") public class DeepDive02Variables { // How to do deep dive: diff --git a/src/org/teachingkidsprogramming/section02methods/FourSquare.java b/src/main/java/org/teachingkidsprogramming/section02methods/FourSquare.java similarity index 100% rename from src/org/teachingkidsprogramming/section02methods/FourSquare.java rename to src/main/java/org/teachingkidsprogramming/section02methods/FourSquare.java diff --git a/src/org/teachingkidsprogramming/section02methods/Houses.java b/src/main/java/org/teachingkidsprogramming/section02methods/Houses.java similarity index 100% rename from src/org/teachingkidsprogramming/section02methods/Houses.java rename to src/main/java/org/teachingkidsprogramming/section02methods/Houses.java diff --git a/src/org/teachingkidsprogramming/section02methods/HousesQuiz.java b/src/main/java/org/teachingkidsprogramming/section02methods/HousesQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section02methods/HousesQuiz.java rename to src/main/java/org/teachingkidsprogramming/section02methods/HousesQuiz.java diff --git a/src/main/java/org/teachingkidsprogramming/section02methods/TriangleShell.java b/src/main/java/org/teachingkidsprogramming/section02methods/TriangleShell.java new file mode 100644 index 0000000..0081208 --- /dev/null +++ b/src/main/java/org/teachingkidsprogramming/section02methods/TriangleShell.java @@ -0,0 +1,28 @@ +package org.teachingkidsprogramming.section02methods; + +@SuppressWarnings("unused") +public class TriangleShell { + private static int length; + + public static void main(String[] args) { + // Show the tortoise --#1 + // Make the tortoise go as fast as possible --#6 + // Do the following 60 times --#7.1 + // Change the pen color of the line the tortoise draws to a random color + // --#9 + // Increase the current length of the side by 4 pixels --#8 + // + // drawTriangle (recipe below) --#5.1 + // ------------- Recipe for drawTriangle --#5.2 + // Do the following 3 times --#3.1 + // Move the tortoise the current length of a side --#4 + // Turn the tortoise 1/3rd of 360 degrees --#2 + // Repeat --#3.2 + // ------------- End of drawTriangle recipe --#5.3 + // + // Turn the tortoise 1/60th of 360 degrees to the right --#10 + // Repeat --#7.2 + } + // Related Videos: + // Sub recipe-> Method : http://youtu.be/C6fnqjceVcs +} diff --git a/src/org/teachingkidsprogramming/section03ifs/ChooseYourOwnAdventure.java b/src/main/java/org/teachingkidsprogramming/section03ifs/ChooseYourOwnAdventure.java similarity index 100% rename from src/org/teachingkidsprogramming/section03ifs/ChooseYourOwnAdventure.java rename to src/main/java/org/teachingkidsprogramming/section03ifs/ChooseYourOwnAdventure.java diff --git a/src/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java b/src/main/java/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java similarity index 99% rename from src/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java rename to src/main/java/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java index 08d5062..d63e0e9 100644 --- a/src/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java +++ b/src/main/java/org/teachingkidsprogramming/section03ifs/DeepDive03Ifs.java @@ -5,6 +5,7 @@ import org.junit.Test; @Ignore +@SuppressWarnings("unused") public class DeepDive03Ifs { // How to do deep dive: diff --git a/src/org/teachingkidsprogramming/section03ifs/HiLow.java b/src/main/java/org/teachingkidsprogramming/section03ifs/HiLow.java similarity index 100% rename from src/org/teachingkidsprogramming/section03ifs/HiLow.java rename to src/main/java/org/teachingkidsprogramming/section03ifs/HiLow.java diff --git a/src/org/teachingkidsprogramming/section03ifs/HiLowQuiz.java b/src/main/java/org/teachingkidsprogramming/section03ifs/HiLowQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section03ifs/HiLowQuiz.java rename to src/main/java/org/teachingkidsprogramming/section03ifs/HiLowQuiz.java diff --git a/src/org/teachingkidsprogramming/section04mastery/BackgroundPhoto.java b/src/main/java/org/teachingkidsprogramming/section04mastery/BackgroundPhoto.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/BackgroundPhoto.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/BackgroundPhoto.java diff --git a/src/org/teachingkidsprogramming/section04mastery/DeepDive04Mastery.java b/src/main/java/org/teachingkidsprogramming/section04mastery/DeepDive04Mastery.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/DeepDive04Mastery.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/DeepDive04Mastery.java diff --git a/src/org/teachingkidsprogramming/section04mastery/DigiFlower.java b/src/main/java/org/teachingkidsprogramming/section04mastery/DigiFlower.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/DigiFlower.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/DigiFlower.java diff --git a/src/org/teachingkidsprogramming/section04mastery/KnottedRing.java b/src/main/java/org/teachingkidsprogramming/section04mastery/KnottedRing.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/KnottedRing.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/KnottedRing.java diff --git a/src/org/teachingkidsprogramming/section04mastery/PentagonCrazy.java b/src/main/java/org/teachingkidsprogramming/section04mastery/PentagonCrazy.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/PentagonCrazy.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/PentagonCrazy.java diff --git a/src/org/teachingkidsprogramming/section04mastery/PentagonCrazyQuiz.java b/src/main/java/org/teachingkidsprogramming/section04mastery/PentagonCrazyQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/PentagonCrazyQuiz.java rename to src/main/java/org/teachingkidsprogramming/section04mastery/PentagonCrazyQuiz.java diff --git a/src/org/teachingkidsprogramming/section05recursion/DeepDive05Recursion.java b/src/main/java/org/teachingkidsprogramming/section05recursion/DeepDive05Recursion.java similarity index 100% rename from src/org/teachingkidsprogramming/section05recursion/DeepDive05Recursion.java rename to src/main/java/org/teachingkidsprogramming/section05recursion/DeepDive05Recursion.java diff --git a/src/org/teachingkidsprogramming/section05recursion/SpiderWeb.java b/src/main/java/org/teachingkidsprogramming/section05recursion/SpiderWeb.java similarity index 100% rename from src/org/teachingkidsprogramming/section05recursion/SpiderWeb.java rename to src/main/java/org/teachingkidsprogramming/section05recursion/SpiderWeb.java diff --git a/src/org/teachingkidsprogramming/section05recursion/TreeQuiz.java b/src/main/java/org/teachingkidsprogramming/section05recursion/TreeQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section05recursion/TreeQuiz.java rename to src/main/java/org/teachingkidsprogramming/section05recursion/TreeQuiz.java diff --git a/src/org/teachingkidsprogramming/section05recursion/TurtleTree.java b/src/main/java/org/teachingkidsprogramming/section05recursion/TurtleTree.java similarity index 98% rename from src/org/teachingkidsprogramming/section05recursion/TurtleTree.java rename to src/main/java/org/teachingkidsprogramming/section05recursion/TurtleTree.java index acece26..d6459bb 100644 --- a/src/org/teachingkidsprogramming/section05recursion/TurtleTree.java +++ b/src/main/java/org/teachingkidsprogramming/section05recursion/TurtleTree.java @@ -5,6 +5,7 @@ public class TurtleTree { + @SuppressWarnings("unused") public static void main(String[] args) { // Make the tortoise go as fast as possible --#10 diff --git a/src/org/teachingkidsprogramming/section06modelviewcontroller/AdLibs.java b/src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/AdLibs.java similarity index 100% rename from src/org/teachingkidsprogramming/section06modelviewcontroller/AdLibs.java rename to src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/AdLibs.java diff --git a/src/org/teachingkidsprogramming/section06modelviewcontroller/AdLibsQuiz.java b/src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/AdLibsQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section06modelviewcontroller/AdLibsQuiz.java rename to src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/AdLibsQuiz.java diff --git a/src/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java b/src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java similarity index 99% rename from src/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java rename to src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java index 3fa1897..1b4955a 100644 --- a/src/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java +++ b/src/main/java/org/teachingkidsprogramming/section06modelviewcontroller/DeepDive06ModelViewController.java @@ -8,6 +8,7 @@ import org.junit.Test; import org.teachingextensions.logo.Tortoise; +@SuppressWarnings("unused") public class DeepDive06ModelViewController { // How to do deep dive: diff --git a/src/org/teachingkidsprogramming/section07events/ConnectTheDots.java b/src/main/java/org/teachingkidsprogramming/section07events/ConnectTheDots.java similarity index 100% rename from src/org/teachingkidsprogramming/section07events/ConnectTheDots.java rename to src/main/java/org/teachingkidsprogramming/section07events/ConnectTheDots.java diff --git a/src/org/teachingkidsprogramming/section07events/DeepDive07Events.java b/src/main/java/org/teachingkidsprogramming/section07events/DeepDive07Events.java similarity index 99% rename from src/org/teachingkidsprogramming/section07events/DeepDive07Events.java rename to src/main/java/org/teachingkidsprogramming/section07events/DeepDive07Events.java index b82be92..15a6900 100644 --- a/src/org/teachingkidsprogramming/section07events/DeepDive07Events.java +++ b/src/main/java/org/teachingkidsprogramming/section07events/DeepDive07Events.java @@ -10,6 +10,7 @@ import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.Turtle.Animals; +@SuppressWarnings("unused") public class DeepDive07Events { // How to do deep dive: diff --git a/src/org/teachingkidsprogramming/section07events/ManyAnimals.java b/src/main/java/org/teachingkidsprogramming/section07events/ManyAnimals.java similarity index 100% rename from src/org/teachingkidsprogramming/section07events/ManyAnimals.java rename to src/main/java/org/teachingkidsprogramming/section07events/ManyAnimals.java diff --git a/src/org/teachingkidsprogramming/section07events/SimpleBubble.java b/src/main/java/org/teachingkidsprogramming/section07events/SimpleBubble.java similarity index 100% rename from src/org/teachingkidsprogramming/section07events/SimpleBubble.java rename to src/main/java/org/teachingkidsprogramming/section07events/SimpleBubble.java diff --git a/src/org/teachingkidsprogramming/section07events/SimpleBubbleQuiz.java b/src/main/java/org/teachingkidsprogramming/section07events/SimpleBubbleQuiz.java similarity index 100% rename from src/org/teachingkidsprogramming/section07events/SimpleBubbleQuiz.java rename to src/main/java/org/teachingkidsprogramming/section07events/SimpleBubbleQuiz.java diff --git a/src/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java b/src/main/java/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java similarity index 99% rename from src/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java rename to src/main/java/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java index d87d2eb..a46128e 100644 --- a/src/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java +++ b/src/main/java/org/teachingkidsprogramming/section08tdd/DeepDive08TDD.java @@ -7,6 +7,7 @@ import org.teachingextensions.logo.Tortoise; //This deepdive is in progress! +@SuppressWarnings("unused") public class DeepDive08TDD { // How to do deep dive: diff --git a/src/org/teachingkidsprogramming/section08tdd/FizzBuzz.java b/src/main/java/org/teachingkidsprogramming/section08tdd/FizzBuzz.java similarity index 100% rename from src/org/teachingkidsprogramming/section08tdd/FizzBuzz.java rename to src/main/java/org/teachingkidsprogramming/section08tdd/FizzBuzz.java diff --git a/src/org/teachingkidsprogramming/section08tdd/FizzBuzzTDD.java b/src/main/java/org/teachingkidsprogramming/section08tdd/FizzBuzzTDD.java similarity index 100% rename from src/org/teachingkidsprogramming/section08tdd/FizzBuzzTDD.java rename to src/main/java/org/teachingkidsprogramming/section08tdd/FizzBuzzTDD.java diff --git a/src/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java b/src/main/java/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java similarity index 98% rename from src/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java rename to src/main/java/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java index d088449..4f79737 100644 --- a/src/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java +++ b/src/main/java/org/teachingkidsprogramming/section08tdd/SimplePuzzle.java @@ -40,7 +40,6 @@ public void run() this.setLookAndFeel(); // Do this until the player finds the solution -- #6.1 // Create a Message Box that shows the message "Looking for puzzle solution..." -- #4 - // Try to create a solvable puzzle -- #5.1 // Create an array of integers named 'shuffled' which shuffles the cell array -- #2.1 // Make the puzzle use the cells array, run it, then use the shuffled array -- #2.2 puzzle = new Puzzle(cells); diff --git a/src/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java b/src/main/java/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java similarity index 97% rename from src/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java rename to src/main/java/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java index be32476..bdf0db4 100644 --- a/src/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java +++ b/src/main/java/org/teachingkidsprogramming/section09exceptions/DeepDive09exceptions.java @@ -6,6 +6,7 @@ import org.teachingextensions.approvals.lite.util.FormattedException; @Ignore +@SuppressWarnings("unused") public class DeepDive09exceptions { // How to do deep dive: @@ -146,6 +147,7 @@ private Chain createChain() } private static class _____ extends Exception { + private static final long serialVersionUID = 7013264013388843231L; public _____(String message, Exception originalException) { super(message, originalException); diff --git a/src/you/need/to/fill/in/the/______.java b/src/main/java/you/need/to/fill/in/the/______.java similarity index 100% rename from src/you/need/to/fill/in/the/______.java rename to src/main/java/you/need/to/fill/in/the/______.java diff --git a/src/main/resources/Batgirl.png b/src/main/resources/Batgirl.png new file mode 100755 index 0000000..f08d92c Binary files /dev/null and b/src/main/resources/Batgirl.png differ diff --git a/src/main/resources/Batgirl1a.png b/src/main/resources/Batgirl1a.png new file mode 100755 index 0000000..23ca8ca Binary files /dev/null and b/src/main/resources/Batgirl1a.png differ diff --git a/src/main/resources/Batgirl1b.png b/src/main/resources/Batgirl1b.png new file mode 100755 index 0000000..ae5c30e Binary files /dev/null and b/src/main/resources/Batgirl1b.png differ diff --git a/src/main/resources/Batgirl1c.png b/src/main/resources/Batgirl1c.png new file mode 100755 index 0000000..b0c43a0 Binary files /dev/null and b/src/main/resources/Batgirl1c.png differ diff --git a/src/main/resources/Batgirl2a.png b/src/main/resources/Batgirl2a.png new file mode 100755 index 0000000..0f5aa24 Binary files /dev/null and b/src/main/resources/Batgirl2a.png differ diff --git a/src/main/resources/Batgirl2b.png b/src/main/resources/Batgirl2b.png new file mode 100755 index 0000000..03e4511 Binary files /dev/null and b/src/main/resources/Batgirl2b.png differ diff --git a/src/main/resources/Batgirl2c.png b/src/main/resources/Batgirl2c.png new file mode 100755 index 0000000..84bd8d0 Binary files /dev/null and b/src/main/resources/Batgirl2c.png differ diff --git a/src/main/resources/Batgirl3a.png b/src/main/resources/Batgirl3a.png new file mode 100755 index 0000000..c98f247 Binary files /dev/null and b/src/main/resources/Batgirl3a.png differ diff --git a/src/main/resources/Batgirl3b.png b/src/main/resources/Batgirl3b.png new file mode 100755 index 0000000..df354c3 Binary files /dev/null and b/src/main/resources/Batgirl3b.png differ diff --git a/src/main/resources/Batgirl3c.png b/src/main/resources/Batgirl3c.png new file mode 100755 index 0000000..f6918c7 Binary files /dev/null and b/src/main/resources/Batgirl3c.png differ diff --git a/src/org/teachingextensions/logo/ExplodedTurtle.png b/src/main/resources/ExplodedTurtle.png similarity index 100% rename from src/org/teachingextensions/logo/ExplodedTurtle.png rename to src/main/resources/ExplodedTurtle.png diff --git a/src/org/teachingextensions/logo/ExplodedTurtleOld.png b/src/main/resources/ExplodedTurtleOld.png similarity index 100% rename from src/org/teachingextensions/logo/ExplodedTurtleOld.png rename to src/main/resources/ExplodedTurtleOld.png diff --git a/src/org/teachingextensions/logo/Spider.png b/src/main/resources/Spider.png similarity index 100% rename from src/org/teachingextensions/logo/Spider.png rename to src/main/resources/Spider.png diff --git a/src/org/teachingextensions/logo/Turtle.png b/src/main/resources/Turtle.png similarity index 100% rename from src/org/teachingextensions/logo/Turtle.png rename to src/main/resources/Turtle.png diff --git a/src/org/teachingextensions/logo/Unicorn.png b/src/main/resources/Unicorn.png similarity index 100% rename from src/org/teachingextensions/logo/Unicorn.png rename to src/main/resources/Unicorn.png diff --git a/src/org/teachingkidsprogramming/section01forloops/PrintThis/0_Keyboard-Shortcuts.docx b/src/main/resources/documents/0_Keyboard-Shortcuts.docx similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/PrintThis/0_Keyboard-Shortcuts.docx rename to src/main/resources/documents/0_Keyboard-Shortcuts.docx diff --git a/src/org/teachingkidsprogramming/section01forloops/PrintThis/1_SimpleSquareWorksheet.docx b/src/main/resources/documents/1_SimpleSquareWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section01forloops/PrintThis/1_SimpleSquareWorksheet.docx rename to src/main/resources/documents/1_SimpleSquareWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section02methods/PrintThis/2_HousesWorksheet.docx b/src/main/resources/documents/2_HousesWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section02methods/PrintThis/2_HousesWorksheet.docx rename to src/main/resources/documents/2_HousesWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section03ifs/PrintThis/3_HiLowWorksheet.docx b/src/main/resources/documents/3_HiLowWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section03ifs/PrintThis/3_HiLowWorksheet.docx rename to src/main/resources/documents/3_HiLowWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section04mastery/PrintThis/4_PentagonCrazyWorksheet.docx b/src/main/resources/documents/4_PentagonCrazyWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section04mastery/PrintThis/4_PentagonCrazyWorksheet.docx rename to src/main/resources/documents/4_PentagonCrazyWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section05recursion/PrintThis/5_TurtleTreeWorksheet.docx b/src/main/resources/documents/5_TurtleTreeWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section05recursion/PrintThis/5_TurtleTreeWorksheet.docx rename to src/main/resources/documents/5_TurtleTreeWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section06modelviewcontroller/PrintThis/6_AdLibsWorksheet.docx b/src/main/resources/documents/6_AdLibsWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section06modelviewcontroller/PrintThis/6_AdLibsWorksheet.docx rename to src/main/resources/documents/6_AdLibsWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section07events/PrintThis/7_SimpleBubbleWorksheet.docx b/src/main/resources/documents/7_SimpleBubbleWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section07events/PrintThis/7_SimpleBubbleWorksheet.docx rename to src/main/resources/documents/7_SimpleBubbleWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section08tdd/PrintThis/8_FizzBuzzWorksheet.docx b/src/main/resources/documents/8_FizzBuzzWorksheet.docx similarity index 100% rename from src/org/teachingkidsprogramming/section08tdd/PrintThis/8_FizzBuzzWorksheet.docx rename to src/main/resources/documents/8_FizzBuzzWorksheet.docx diff --git a/src/org/teachingkidsprogramming/section02methods/PrintThis/Tortoise.pdf b/src/main/resources/documents/Tortoise.pdf similarity index 100% rename from src/org/teachingkidsprogramming/section02methods/PrintThis/Tortoise.pdf rename to src/main/resources/documents/Tortoise.pdf diff --git a/src/org/teachingkidsprogramming/recipes/completed/view.rtf b/src/main/resources/documents/view.rtf similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/view.rtf rename to src/main/resources/documents/view.rtf diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java b/src/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java deleted file mode 100644 index 2ebb3dc..0000000 --- a/src/org/teachingextensions/approvals/lite/reporters/macosx/BeyondCompareReporter.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.teachingextensions.approvals.lite.reporters.macosx; - -import java.text.MessageFormat; - -import org.teachingextensions.approvals.lite.reporters.GenericDiffReporter; - -public class BeyondCompareReporter extends GenericDiffReporter { - public static final BeyondCompareReporter INSTANCE = new BeyondCompareReporter(); - static final String DIFF_PROGRAM = "/usr/local/bin/bcompare"; - static final String MESSAGE = MessageFormat.format( - "Unable to find Beyond Compare at {0}", DIFF_PROGRAM); - - public BeyondCompareReporter() { - super(DIFF_PROGRAM, MESSAGE); - } -} diff --git a/src/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java b/src/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java deleted file mode 100644 index 9ab699e..0000000 --- a/src/org/teachingextensions/approvals/lite/reporters/macosx/MacDiffReporter.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.teachingextensions.approvals.lite.reporters.macosx; - -import org.teachingextensions.approvals.lite.reporters.FirstWorkingReporter; - -public class MacDiffReporter extends FirstWorkingReporter { - public static final MacDiffReporter INSTANCE = new MacDiffReporter(); - - public MacDiffReporter() { - super(DiffMergeReporter.INSTANCE, KaleidoscopeDiffReporter.INSTANCE, P4MergeReporter.INSTANCE, TkDiffReporter.INSTANCE); - } -} diff --git a/src/org/teachingextensions/approvals/lite/util/StringUtils.java b/src/org/teachingextensions/approvals/lite/util/StringUtils.java deleted file mode 100644 index 378de23..0000000 --- a/src/org/teachingextensions/approvals/lite/util/StringUtils.java +++ /dev/null @@ -1,215 +0,0 @@ -package org.teachingextensions.approvals.lite.util; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Map; - -/** - * A static class of convenience functions for database access - */ -public class StringUtils { - public static final String NEW_LINE = System.getProperty("line.separator"); - - public static String stripWhiteSpace(String text) { - return stripWhiteSpace(text, false); - } - - public static String padNumber(long number, int digits) { - String text = "" + number; - while (text.length() < digits) { - text = "0" + text; - } - return text; - } - - public static String padNumber(int number, int digits) { - return padNumber((long) number, digits); - } - - public static String stripWhiteSpace(String text, boolean all) { - StringBuilder newText = new StringBuilder(); - boolean whitespace = false; - int num = text.length(); - char whiteSpaceChar = ' '; - boolean atStart = true; - for (int i = 0; i < num; i++) { - char c = text.charAt(i); - switch (c) { - case '\r': - case '\n': - whiteSpaceChar = '\n'; - whitespace = true; - break; - case '\t': - case ' ': - whitespace = true; - break; - default: - if (whitespace && atStart) { - whitespace = false; - } - if (whitespace) { - whitespace = false; - newText.append(all ? '_' : whiteSpaceChar); - whiteSpaceChar = ' '; - } - atStart = false; - newText.append(c); - break; - } - } - return newText.toString(); - } - - public static String stripNonNumeric(String number, boolean allowDecimal, - boolean allowNegative) { - boolean allowExponential = allowDecimal; - boolean afterE = false; - if (number == null) { - return ""; - } - StringBuilder result = new StringBuilder(); - for (int i = 0; i < number.length(); i++) { - char c = number.charAt(i); - switch (c) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - result.append(c); - afterE = false; - break; - case '-': - if (allowNegative || afterE) { - result.append(c); - allowNegative = false; - } - break; - case '.': - if (allowDecimal) { - result.append(c); - allowDecimal = false; - } - afterE = false; - break; - case 'e': - case 'E': - if (allowExponential) { - result.append(c); - allowExponential = false; - } - afterE = true; - break; - default: - break; - } - } - return result.toString(); - } - - /** - * A convenience function to check that a String has at least 1 character. - * - * @param string - * The string in question - * @return true if Non Zero. - */ - public static boolean isNonZero(String string) { - return string != null && string.trim().length() > 0; - } - - public static boolean isEmpty(String string) { - return !isNonZero(string); - } - - /** - * A convenience function to turn a vector of String objects into an Array of - * the String objects. - * - * @param vectorOf - * a Vector of String objects - * @return the array of String. - * @throws Error - * if an element of vectorOf is not a String object. - */ - public static String[] toArray(java.util.Collection vectorOf) { - if (vectorOf == null) { - return new String[0]; - } - String array[] = new String[vectorOf.size()]; - java.util.Iterator iterator = vectorOf.iterator(); - int i = 0; - while (iterator.hasNext()) { - String rowObject = iterator.next(); - if (rowObject != null) { - array[i++] = rowObject; - } else { - throw new Error("toArray[" + i - + "] is not an instance of String but a " - + ObjectUtils.getClassName(null)); - } - } - return array; - } - - public static String toString(String name, T[] array) { - StringBuilder buffer = new StringBuilder(); - name = (name == null ? "array" : name); - if (array == null || array.length == 0) { - buffer.append(name).append(".length = 0"); - } else { - int maxPadding = ("" + array.length).length(); - for (int i = 0; i < array.length; i++) { - buffer.append(name).append("[").append(padNumber(i, maxPadding)) - .append("] = ").append(array[i]).append("\r\n"); - } - } - return buffer.toString(); - } - - public static String toString(String name, Iterable array) { - StringBuilder buffer = new StringBuilder(); - name = (name == null ? "array" : name); - if (array != null) { - int count = 0; - for (T t : array) { - buffer.append(name).append("[").append(count).append("] = ") - .append(arrayStringHelper(t)).append("\r\n"); - count++; - } - } - if (buffer.length() == 0) { - buffer.append(name).append(".length = 0"); - } - return buffer.toString(); - } - - public static String arrayStringHelper(Object o) { - if (o == null) { - return "null"; - } - return o.getClass().isArray() ? Arrays.toString((Object[]) o) : o - .toString(); - } - - public static InputStream convertToInputStream(String string) { - return new ByteArrayInputStream(string.getBytes()); - } - - public static String toString(Map map) { - StringBuilder b = new StringBuilder(); - Object keySet[] = map.keySet().toArray(); - Arrays.sort(keySet); - for (Object key : keySet) { - b.append(String.format("%s : %s \r\n", key, map.get(key))); - } - return b.toString(); - } -} \ No newline at end of file diff --git a/src/org/teachingextensions/approvals/lite/util/velocity/StringResourceLoader.java b/src/org/teachingextensions/approvals/lite/util/velocity/StringResourceLoader.java deleted file mode 100644 index d44c4c2..0000000 --- a/src/org/teachingextensions/approvals/lite/util/velocity/StringResourceLoader.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.teachingextensions.approvals.lite.util.velocity; - -/* - * Copyright 2001-2002,2004 The Apache Software Foundation. - * - * Licensed 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. - */ -import java.io.InputStream; - -import org.apache.commons.collections.ExtendedProperties; -import org.apache.velocity.exception.ResourceNotFoundException; -import org.apache.velocity.runtime.resource.Resource; -import org.apache.velocity.runtime.resource.loader.ResourceLoader; -import org.teachingextensions.approvals.lite.util.StringUtils; - -/** - * This is a simple resource loader that loads the string as a template - */ -public class StringResourceLoader extends ResourceLoader -{ - /** - * ******************************************************************* - */ - public boolean isSourceModified(Resource resource) - { - return true; - } - /** - * ******************************************************************* - */ - public long getLastModified(Resource resource) - { - return 0; - } - /** - * ******************************************************************* - */ - public synchronized InputStream getResourceStream(String name) throws ResourceNotFoundException - { - return StringUtils.convertToInputStream(name); - } - /** - * ******************************************************************* - */ - public void init(ExtendedProperties arg0) - { - // My_System.event("initialize"); - } - /***********************************************************************/ - /***********************************************************************/ -} diff --git a/src/org/teachingextensions/approvals/lite/util/velocity/VelocityParser.java b/src/org/teachingextensions/approvals/lite/util/velocity/VelocityParser.java deleted file mode 100644 index 3da3b3c..0000000 --- a/src/org/teachingextensions/approvals/lite/util/velocity/VelocityParser.java +++ /dev/null @@ -1,102 +0,0 @@ -package org.teachingextensions.approvals.lite.util.velocity; - -import java.io.StringWriter; -import java.io.Writer; -import java.util.Enumeration; -import java.util.Properties; - -import org.apache.log4j.Level; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.context.Context; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.runtime.log.NullLogSystem; -import org.teachingextensions.approvals.lite.util.ObjectUtils; -import org.teachingextensions.approvals.lite.util.ParserCommons; -import org.teachingextensions.approvals.lite.util.io.FileUtils; - -public class VelocityParser -{ - private static VelocityEngine currentEngine = null; - static - { - for (Enumeration e = LogManager.getCurrentLoggers(); e.hasMoreElements();) - { - ((Logger) e.nextElement()).setLevel(Level.OFF); - } - } - public static String parseString(String template, ContextAware process) - { - Properties props = new Properties(); - props.put("resource.loader", "class"); - props.put("class.resource.loader.class", StringResourceLoader.class.getName()); - props.put("velocimacro.context.localscope", "" + true); - props.put("runtime.introspector.uberspect", TestableUberspect.class.getName()); - props.put("velocimacro.permissions.allow.inline.local.scope", "" + true); - return parse(template, props, new ContextAware[]{process, Default.INSTANCE}); - } - public static String parse(String template, Properties props, ContextAware[] process) - { - StringWriter out = new StringWriter(); - parse(template, props, process, out); - return out.toString(); - } - public static Writer parse(String template, Properties props, ContextAware process[], Writer out) - { - try - { - props.put("directive.foreach.counter.initial.value", "0"); - props.put(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, NullLogSystem.class.getName()); - VelocityEngine engine = initializeEngine(props); - VelocityContext context = new VelocityContext(); - Template velocityTemplate = engine.getTemplate(template); - for (ContextAware p : process) - { - if (p != null) - p.setupContext(context); - } - velocityTemplate.merge(context, out); - return out; - } - catch (Exception e) - { - throw ObjectUtils.throwAsError(e); - } - } - public static synchronized VelocityEngine initializeEngine(Properties props) throws Exception - { - if (currentEngine == null - || isDifferentForProperties(props, currentEngine, new String[]{"resource.loader", - "file.resource.loader.path"})) - { - currentEngine = new VelocityEngine(); - currentEngine.init(props); - } - return currentEngine; - } - private static boolean isDifferentForProperties(Properties props, VelocityEngine engine, String[] keys) - { - for (String key : keys) - { - if (!ObjectUtils.isEqual(props.get(key), engine.getProperty(key))) { return true; } - } - return false; - } - public static class Default implements ContextAware - { - public static ContextAware INSTANCE = new Default(); - @Override - public void setupContext(Context context) - { - context.put("commons", ParserCommons.INSTANCE); - } - } - public static String parseFromClassPath(Class clazz, String string, ContextAware context) - { - String resource = FileUtils.readFromClassPath(clazz, string); - return parseString(resource, context); - } -} diff --git a/src/org/teachingextensions/logo/Batgirl.png b/src/org/teachingextensions/logo/Batgirl.png deleted file mode 100644 index 19f863f..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl1a.png b/src/org/teachingextensions/logo/Batgirl1a.png deleted file mode 100644 index b608d62..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl1a.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl1b.png b/src/org/teachingextensions/logo/Batgirl1b.png deleted file mode 100644 index b43a459..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl1b.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl1c.png b/src/org/teachingextensions/logo/Batgirl1c.png deleted file mode 100644 index b53eb50..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl1c.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl2a.png b/src/org/teachingextensions/logo/Batgirl2a.png deleted file mode 100644 index b0bfb4e..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl2a.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl2b.png b/src/org/teachingextensions/logo/Batgirl2b.png deleted file mode 100644 index 13ab9bd..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl2b.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl2c.png b/src/org/teachingextensions/logo/Batgirl2c.png deleted file mode 100644 index 4f62187..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl2c.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl3a.png b/src/org/teachingextensions/logo/Batgirl3a.png deleted file mode 100644 index 4f8271d..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl3a.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl3b.png b/src/org/teachingextensions/logo/Batgirl3b.png deleted file mode 100644 index 7693c23..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl3b.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Batgirl3c.png b/src/org/teachingextensions/logo/Batgirl3c.png deleted file mode 100644 index 7a2cb0e..0000000 Binary files a/src/org/teachingextensions/logo/Batgirl3c.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Colors.java b/src/org/teachingextensions/logo/Colors.java deleted file mode 100644 index 189de3c..0000000 --- a/src/org/teachingextensions/logo/Colors.java +++ /dev/null @@ -1,1557 +0,0 @@ -package org.teachingextensions.logo; - -import java.awt.Color; -import java.util.Random; - -/** - * - * Every color under the - * rainbow, - * and different ways to get them. - * - * - * Use PenColors - * @deprecated use {@link PenColors()} instead. - */ -@Deprecated -public class Colors -{ - public static class Blues - { - /** - * The color Navy - *
 
- * - * - * - *
 
- **/ - public static final Color Navy = Color.decode("#000080"); - /** - * The color DarkBlue - * - * - * - * - *
 
- **/ - public static final Color DarkBlue = Color.decode("#00008B"); - /** - * The color MidnightBlue - * - * - * - * - *
 
- **/ - public static final Color MidnightBlue = Color.decode("#191970"); - /** - * The color MediumBlue - * - * - * - * - *
 
- **/ - public static final Color MediumBlue = Color.decode("#0000CD"); - /** - * The color Blue - * - * - * - * - *
 
- **/ - public static final Color Blue = Color.decode("#0000FF"); - /** - * The color Teal - * - * - * - * - *
 
- **/ - public static final Color Teal = Color.decode("#008080"); - /** - * The color DarkSlateBlue - * - * - * - * - *
 
- **/ - public static final Color DarkSlateBlue = Color.decode("#483D8B"); - /** - * The color DarkCyan - * - * - * - * - *
 
- **/ - public static final Color DarkCyan = Color.decode("#008B8B"); - /** - * The color SteelBlue - * - * - * - * - *
 
- **/ - public static final Color SteelBlue = Color.decode("#4682B4"); - /** - * The color RoyalBlue - * - * - * - * - *
 
- **/ - public static final Color RoyalBlue = Color.decode("#4169E1"); - /** - * The color SlateBlue - * - * - * - * - *
 
- **/ - public static final Color SlateBlue = Color.decode("#6A5ACD"); - /** - * The color CadetBlue - * - * - * - * - *
 
- **/ - public static final Color CadetBlue = Color.decode("#5F9EA0"); - /** - * The color DarkTurquoise - * - * - * - * - *
 
- **/ - public static final Color DarkTurquoise = Color.decode("#00CED1"); - /** - * The color DodgerBlue - * - * - * - * - *
 
- **/ - public static final Color DodgerBlue = Color.decode("#1E90FF"); - /** - * The color DeepSkyBlue - * - * - * - * - *
 
- **/ - public static final Color DeepSkyBlue = Color.decode("#00BFFF"); - /** - * The color MediumSlateBlue - * - * - * - * - *
 
- **/ - public static final Color MediumSlateBlue = Color.decode("#7B68EE"); - /** - * The color MediumTurquoise - * - * - * - * - *
 
- **/ - public static final Color MediumTurquoise = Color.decode("#48D1CC"); - /** - * The color CornflowerBlue - * - * - * - * - *
 
- **/ - public static final Color CornflowerBlue = Color.decode("#6495ED"); - /** - * The color Turquoise - * - * - * - * - *
 
- **/ - public static final Color Turquoise = Color.decode("#40E0D0"); - /** - * The color Aqua - * - * - * - * - *
 
- **/ - public static final Color Aqua = Color.decode("#00FFFF"); - /** - * The color Cyan - * - * - * - * - *
 
- **/ - public static final Color Cyan = Color.decode("#00FFFF"); - /** - * The color SkyBlue - * - * - * - * - *
 
- **/ - public static final Color SkyBlue = Color.decode("#87CEEB"); - /** - * The color LightSkyBlue - * - * - * - * - *
 
- **/ - public static final Color LightSkyBlue = Color.decode("#87CEFA"); - /** - * The color Aquamarine - * - * - * - * - *
 
- **/ - public static final Color Aquamarine = Color.decode("#7FFFD4"); - /** - * The color LightSteelBlue - * - * - * - * - *
 
- **/ - public static final Color LightSteelBlue = Color.decode("#B0C4DE"); - /** - * The color LightBlue - * - * - * - * - *
 
- **/ - public static final Color LightBlue = Color.decode("#ADD8E6"); - /** - * The color PowderBlue - * - * - * - * - *
 
- **/ - public static final Color PowderBlue = Color.decode("#B0E0E6"); - /** - * The color PaleTurquoise - * - * - * - * - *
 
- **/ - public static final Color PaleTurquoise = Color.decode("#AFEEEE"); - /** - * The color LightCyan - * - * - * - * - *
 
- **/ - public static final Color LightCyan = Color.decode("#E0FFFF"); - /** - * The color AliceBlue - * - * - * - * - *
 
- **/ - public static final Color AliceBlue = Color.decode("#F0F8FF"); - /** - * The color Azure - * - * - * - * - *
 
- **/ - public static final Color Azure = Color.decode("#F0FFFF"); - } - public static class Browns - { - /** - * The color Maroon - * - * - * - * - *
 
- **/ - public static final Color Maroon = Color.decode("#800000"); - /** - * The color SaddleBrown - * - * - * - * - *
 
- **/ - public static final Color SaddleBrown = Color.decode("#8B4513"); - /** - * The color Brown - * - * - * - * - *
 
- **/ - public static final Color Brown = Color.decode("#A52A2A"); - /** - * The color Sienna - * - * - * - * - *
 
- **/ - public static final Color Sienna = Color.decode("#A0522D"); - /** - * The color DarkGoldenrod - * - * - * - * - *
 
- **/ - public static final Color DarkGoldenrod = Color.decode("#B8860B"); - /** - * The color Chocolate - * - * - * - * - *
 
- **/ - public static final Color Chocolate = Color.decode("#D2691E"); - /** - * The color Peru - * - * - * - * - *
 
- **/ - public static final Color Peru = Color.decode("#CD853F"); - /** - * The color Goldenrod - * - * - * - * - *
 
- **/ - public static final Color Goldenrod = Color.decode("#DAA520"); - /** - * The color RosyBrown - * - * - * - * - *
 
- **/ - public static final Color RosyBrown = Color.decode("#BC8F8F"); - /** - * The color SandyBrown - * - * - * - * - *
 
- **/ - public static final Color SandyBrown = Color.decode("#F4A460"); - /** - * The color Tan - * - * - * - * - *
 
- **/ - public static final Color Tan = Color.decode("#D2B48C"); - /** - * The color BurlyWood - * - * - * - * - *
 
- **/ - public static final Color BurlyWood = Color.decode("#DEB887"); - /** - * The color Wheat - * - * - * - * - *
 
- **/ - public static final Color Wheat = Color.decode("#F5DEB3"); - /** - * The color NavajoWhite - * - * - * - * - *
 
- **/ - public static final Color NavajoWhite = Color.decode("#FFDEAD"); - /** - * The color Bisque - * - * - * - * - *
 
- **/ - public static final Color Bisque = Color.decode("#FFE4C4"); - /** - * The color BlanchedAlmond - * - * - * - * - *
 
- **/ - public static final Color BlanchedAlmond = Color.decode("#FFEBCD"); - /** - * The color Cornsilk - * - * - * - * - *
 
- **/ - public static final Color Cornsilk = Color.decode("#FFF8DC"); - } - public static class Grays - { - /** - * The color Black - * - * - * - * - *
 
- **/ - public static final Color Black = Color.decode("#000000"); - /** - * The color DarkSlateGray - * - * - * - * - *
 
- **/ - public static final Color DarkSlateGray = Color.decode("#2F4F4F"); - /** - * The color DimGray - * - * - * - * - *
 
- **/ - public static final Color DimGray = Color.decode("#696969"); - /** - * The color Gray - * - * - * - * - *
 
- **/ - public static final Color Gray = Color.decode("#808080"); - /** - * The color SlateGray - * - * - * - * - *
 
- **/ - public static final Color SlateGray = Color.decode("#708090"); - /** - * The color LightSlateGray - * - * - * - * - *
 
- **/ - public static final Color LightSlateGray = Color.decode("#778899"); - /** - * The color DarkGray - * - * - * - * - *
 
- **/ - public static final Color DarkGray = Color.decode("#A9A9A9"); - /** - * The color Silver - * - * - * - * - *
 
- **/ - public static final Color Silver = Color.decode("#C0C0C0"); - /** - * The color LightGray - * - * - * - * - *
 
- **/ - public static final Color LightGray = Color.decode("#D3D3D3"); - /** - * The color Gainsboro - * - * - * - * - *
 
- **/ - public static final Color Gainsboro = Color.decode("#DCDCDC"); - } - public static class Greens - { - /** - * The color DarkGreen - * - * - * - * - *
 
- **/ - public static final Color DarkGreen = Color.decode("#006400"); - /** - * The color Green - * - * - * - * - *
 
- **/ - public static final Color Green = Color.decode("#008000"); - /** - * The color ForestGreen - * - * - * - * - *
 
- **/ - public static final Color ForestGreen = Color.decode("#228B22"); - /** - * The color DarkOliveGreen - * - * - * - * - *
 
- **/ - public static final Color DarkOliveGreen = Color.decode("#556B2F"); - /** - * The color Lime - * - * - * - * - *
 
- **/ - public static final Color Lime = Color.decode("#00FF00"); - /** - * The color Olive - * - * - * - * - *
 
- **/ - public static final Color Olive = Color.decode("#808000"); - /** - * The color Teal - * - * - * - * - *
 
- **/ - public static final Color Teal = Color.decode("#008080"); - /** - * The color SeaGreen - * - * - * - * - *
 
- **/ - public static final Color SeaGreen = Color.decode("#2E8B57"); - /** - * The color DarkCyan - * - * - * - * - *
 
- **/ - public static final Color DarkCyan = Color.decode("#008B8B"); - /** - * The color OliveDrab - * - * - * - * - *
 
- **/ - public static final Color OliveDrab = Color.decode("#6B8E23"); - /** - * The color LimeGreen - * - * - * - * - *
 
- **/ - public static final Color LimeGreen = Color.decode("#32CD32"); - /** - * The color MediumSeaGreen - * - * - * - * - *
 
- **/ - public static final Color MediumSeaGreen = Color.decode("#3CB371"); - /** - * The color LawnGreen - * - * - * - * - *
 
- **/ - public static final Color LawnGreen = Color.decode("#7CFC00"); - /** - * The color LightSeaGreen - * - * - * - * - *
 
- **/ - public static final Color LightSeaGreen = Color.decode("#20B2AA"); - /** - * The color Chartreuse - * - * - * - * - *
 
- **/ - public static final Color Chartreuse = Color.decode("#7FFF00"); - /** - * The color SpringGreen - * - * - * - * - *
 
- **/ - public static final Color SpringGreen = Color.decode("#00FF7F"); - /** - * The color MediumSpringGreen - * - * - * - * - *
 
- **/ - public static final Color MediumSpringGreen = Color.decode("#00FA9A"); - /** - * The color YellowGreen - * - * - * - * - *
 
- **/ - public static final Color YellowGreen = Color.decode("#9ACD32"); - /** - * The color DarkTurquoise - * - * - * - * - *
 
- **/ - public static final Color DarkTurquoise = Color.decode("#00CED1"); - /** - * The color DarkSeaGreen - * - * - * - * - *
 
- **/ - public static final Color DarkSeaGreen = Color.decode("#8FBC8F"); - /** - * The color GreenYellow - * - * - * - * - *
 
- **/ - public static final Color GreenYellow = Color.decode("#ADFF2F"); - /** - * The color MediumAquamarine - * - * - * - * - *
 
- **/ - public static final Color MediumAquamarine = Color.decode("#66CDAA"); - /** - * The color MediumTurquoise - * - * - * - * - *
 
- **/ - public static final Color MediumTurquoise = Color.decode("#48D1CC"); - /** - * The color Turquoise - * - * - * - * - *
 
- **/ - public static final Color Turquoise = Color.decode("#40E0D0"); - /** - * The color LightGreen - * - * - * - * - *
 
- **/ - public static final Color LightGreen = Color.decode("#90EE90"); - /** - * The color PaleGreen - * - * - * - * - *
 
- **/ - public static final Color PaleGreen = Color.decode("#98FB98"); - /** - * The color Aquamarine - * - * - * - * - *
 
- **/ - public static final Color Aquamarine = Color.decode("#7FFFD4"); - /** - * The color PaleTurquoise - * - * - * - * - *
 
- **/ - public static final Color PaleTurquoise = Color.decode("#AFEEEE"); - } - public static class Oranges - { - /** - * The color OrangeRed - * - * - * - * - *
 
- **/ - public static final Color OrangeRed = Color.decode("#FF4500"); - /** - * The color DarkOrange - * - * - * - * - *
 
- **/ - public static final Color DarkOrange = Color.decode("#FF8C00"); - /** - * The color Orange - * - * - * - * - *
 
- **/ - public static final Color Orange = Color.decode("#FFA500"); - /** - * The color Tomato - * - * - * - * - *
 
- **/ - public static final Color Tomato = Color.decode("#FF6347"); - /** - * The color Coral - * - * - * - * - *
 
- **/ - public static final Color Coral = Color.decode("#FF7F50"); - /** - * The color LightSalmon - * - * - * - * - *
 
- **/ - public static final Color LightSalmon = Color.decode("#FFA07A"); - } - public static class Pinks - { - /** - * The color MediumVioletRed - * - * - * - * - *
 
- **/ - public static final Color MediumVioletRed = Color.decode("#C71585"); - /** - * The color DeepPink - * - * - * - * - *
 
- **/ - public static final Color DeepPink = Color.decode("#FF1493"); - /** - * The color PaleVioletRed - * - * - * - * - *
 
- **/ - public static final Color PaleVioletRed = Color.decode("#DB7093"); - /** - * The color Fuchsia - * - * - * - * - *
 
- **/ - public static final Color Fuchsia = Color.decode("#FF00FF"); - /** - * The color HotPink - * - * - * - * - *
 
- **/ - public static final Color HotPink = Color.decode("#FF69B4"); - /** - * The color LightPink - * - * - * - * - *
 
- **/ - public static final Color LightPink = Color.decode("#FFB6C1"); - /** - * The color Pink - * - * - * - * - *
 
- **/ - public static final Color Pink = Color.decode("#FFC0CB"); - } - public static class Purples - { - /** - * The color Indigo - * - * - * - * - *
 
- **/ - public static final Color Indigo = Color.decode("#4B0082"); - /** - * The color Purple - * - * - * - * - *
 
- **/ - public static final Color Purple = Color.decode("#800080"); - /** - * The color DarkSlateBlue - * - * - * - * - *
 
- **/ - public static final Color DarkSlateBlue = Color.decode("#483D8B"); - /** - * The color DarkMagenta - * - * - * - * - *
 
- **/ - public static final Color DarkMagenta = Color.decode("#8B008B"); - /** - * The color MediumVioletRed - * - * - * - * - *
 
- **/ - public static final Color MediumVioletRed = Color.decode("#C71585"); - /** - * The color DarkViolet - * - * - * - * - *
 
- **/ - public static final Color DarkViolet = Color.decode("#9400D3"); - /** - * The color SlateBlue - * - * - * - * - *
 
- **/ - public static final Color SlateBlue = Color.decode("#6A5ACD"); - /** - * The color BlueViolet - * - * - * - * - *
 
- **/ - public static final Color BlueViolet = Color.decode("#8A2BE2"); - /** - * The color DarkOrchid - * - * - * - * - *
 
- **/ - public static final Color DarkOrchid = Color.decode("#9932CC"); - /** - * The color MediumSlateBlue - * - * - * - * - *
 
- **/ - public static final Color MediumSlateBlue = Color.decode("#7B68EE"); - /** - * The color RosyBrown - * - * - * - * - *
 
- **/ - public static final Color RosyBrown = Color.decode("#BC8F8F"); - /** - * The color MediumPurple - * - * - * - * - *
 
- **/ - public static final Color MediumPurple = Color.decode("#9370DB"); - /** - * The color PaleVioletRed - * - * - * - * - *
 
- **/ - public static final Color PaleVioletRed = Color.decode("#DB7093"); - /** - * The color MediumOrchid - * - * - * - * - *
 
- **/ - public static final Color MediumOrchid = Color.decode("#BA55D3"); - /** - * The color Fuchsia - * - * - * - * - *
 
- **/ - public static final Color Fuchsia = Color.decode("#FF00FF"); - /** - * The color Magenta - * - * - * - * - *
 
- **/ - public static final Color Magenta = Color.decode("#FF00FF"); - /** - * The color Orchid - * - * - * - * - *
 
- **/ - public static final Color Orchid = Color.decode("#DA70D6"); - /** - * The color Plum - * - * - * - * - *
 
- **/ - public static final Color Plum = Color.decode("#DDA0DD"); - /** - * The color Violet - * - * - * - * - *
 
- **/ - public static final Color Violet = Color.decode("#EE82EE"); - /** - * The color Thistle - * - * - * - * - *
 
- **/ - public static final Color Thistle = Color.decode("#D8BFD8"); - /** - * The color Lavender - * - * - * - * - *
 
- **/ - public static final Color Lavender = Color.decode("#E6E6FA"); - } - public static class Reds - { - /** - * The color DarkRed - * - * - * - * - *
 
- **/ - public static final Color DarkRed = Color.decode("#8B0000"); - /** - * The color FireBrick - * - * - * - * - *
 
- **/ - public static final Color FireBrick = Color.decode("#B22222"); - /** - * The color Red - * - * - * - * - *
 
- **/ - public static final Color Red = Color.decode("#FF0000"); - /** - * The color Crimson - * - * - * - * - *
 
- **/ - public static final Color Crimson = Color.decode("#DC143C"); - /** - * The color OrangeRed - * - * - * - * - *
 
- **/ - public static final Color OrangeRed = Color.decode("#FF4500"); - /** - * The color MediumVioletRed - * - * - * - * - *
 
- **/ - public static final Color MediumVioletRed = Color.decode("#C71585"); - /** - * The color IndianRed - * - * - * - * - *
 
- **/ - public static final Color IndianRed = Color.decode("#CD5C5C"); - /** - * The color Tomato - * - * - * - * - *
 
- **/ - public static final Color Tomato = Color.decode("#FF6347"); - /** - * The color PaleVioletRed - * - * - * - * - *
 
- **/ - public static final Color PaleVioletRed = Color.decode("#DB7093"); - /** - * The color Salmon - * - * - * - * - *
 
- **/ - public static final Color Salmon = Color.decode("#FA8072"); - /** - * The color LightCoral - * - * - * - * - *
 
- **/ - public static final Color LightCoral = Color.decode("#F08080"); - /** - * The color DarkSalmon - * - * - * - * - *
 
- **/ - public static final Color DarkSalmon = Color.decode("#E9967A"); - /** - * The color LightSalmon - * - * - * - * - *
 
- **/ - public static final Color LightSalmon = Color.decode("#FFA07A"); - } - public static class Whites - { - /** - * The color AntiqueWhite - * - * - * - * - *
 
- **/ - public static final Color AntiqueWhite = Color.decode("#FAEBD7"); - /** - * The color MistyRose - * - * - * - * - *
 
- **/ - public static final Color MistyRose = Color.decode("#FFE4E1"); - /** - * The color Beige - * - * - * - * - *
 
- **/ - public static final Color Beige = Color.decode("#F5F5DC"); - /** - * The color Linen - * - * - * - * - *
 
- **/ - public static final Color Linen = Color.decode("#FAF0E6"); - /** - * The color OldLace - * - * - * - * - *
 
- **/ - public static final Color OldLace = Color.decode("#FDF5E6"); - /** - * The color Honeydew - * - * - * - * - *
 
- **/ - public static final Color Honeydew = Color.decode("#F0FFF0"); - /** - * The color WhiteSmoke - * - * - * - * - *
 
- **/ - public static final Color WhiteSmoke = Color.decode("#F5F5F5"); - /** - * The color Seashell - * - * - * - * - *
 
- **/ - public static final Color Seashell = Color.decode("#FFF5EE"); - /** - * The color LavenderBlush - * - * - * - * - *
 
- **/ - public static final Color LavenderBlush = Color.decode("#FFF0F5"); - /** - * The color AliceBlue - * - * - * - * - *
 
- **/ - public static final Color AliceBlue = Color.decode("#F0F8FF"); - /** - * The color FloralWhite - * - * - * - * - *
 
- **/ - public static final Color FloralWhite = Color.decode("#FFFAF0"); - /** - * The color MintCream - * - * - * - * - *
 
- **/ - public static final Color MintCream = Color.decode("#F5FFFA"); - /** - * The color Azure - * - * - * - * - *
 
- **/ - public static final Color Azure = Color.decode("#F0FFFF"); - /** - * The color Ivory - * - * - * - * - *
 
- **/ - public static final Color Ivory = Color.decode("#FFFFF0"); - /** - * The color GhostWhite - * - * - * - * - *
 
- **/ - public static final Color GhostWhite = Color.decode("#F8F8FF"); - /** - * The color Snow - * - * - * - * - *
 
- **/ - public static final Color Snow = Color.decode("#FFFAFA"); - /** - * The color White - * - * - * - * - *
 
- **/ - public static final Color White = Color.decode("#FFFFFF"); - } - public static class Yellows - { - /** - * The color DarkGoldenrod - * - * - * - * - *
 
- **/ - public static final Color DarkGoldenrod = Color.decode("#B8860B"); - /** - * The color Goldenrod - * - * - * - * - *
 
- **/ - public static final Color Goldenrod = Color.decode("#DAA520"); - /** - * The color Gold - * - * - * - * - *
 
- **/ - public static final Color Gold = Color.decode("#FFD700"); - /** - * The color DarkKhaki - * - * - * - * - *
 
- **/ - public static final Color DarkKhaki = Color.decode("#BDB76B"); - /** - * The color Yellow - * - * - * - * - *
 
- **/ - public static final Color Yellow = Color.decode("#FFFF00"); - /** - * The color Khaki - * - * - * - * - *
 
- **/ - public static final Color Khaki = Color.decode("#F0E68C"); - /** - * The color PaleGoldenrod - * - * - * - * - *
 
- **/ - public static final Color PaleGoldenrod = Color.decode("#EEE8AA"); - /** - * The color PeachPuff - * - * - * - * - *
 
- **/ - public static final Color PeachPuff = Color.decode("#FFDAB9"); - /** - * The color Moccasin - * - * - * - * - *
 
- **/ - public static final Color Moccasin = Color.decode("#FFE4B5"); - /** - * The color PapayaWhip - * - * - * - * - *
 
- **/ - public static final Color PapayaWhip = Color.decode("#FFEFD5"); - /** - * The color LemonChiffon - * - * - * - * - *
 
- **/ - public static final Color LemonChiffon = Color.decode("#FFFACD"); - /** - * The color LightGoldenrodYellow - * - * - * - * - *
 
- **/ - public static final Color LightGoldenrodYellow = Color.decode("#FAFAD2"); - /** - * The color LightYellow - * - * - * - * - *
 
- **/ - public static final Color LightYellow = Color.decode("#FFFFE0"); - } - private static Random RANDOM = new Random(); - public static Color darken(Color color) - { - int red = decrease(color.getRed(), 10); - int green = decrease(color.getGreen(), 10); - int blue = decrease(color.getBlue(), 10); - return new Color(red, green, blue); - } - private static int decrease(int amount, int decreaseBy) - { - return Math.max(0, amount - decreaseBy); - } - public static Color lighten(Color color) - { - int red = increase(color.getRed(), 10); - int green = increase(color.getGreen(), 10); - int blue = increase(color.getBlue(), 10); - return new Color(red, green, blue); - } - private static int increase(int amount, int increaseBy) - { - return Math.min(255, amount + increaseBy); - } - public static Color getRandomColor() - { - return new Color(RANDOM.nextInt(255), RANDOM.nextInt(255), RANDOM.nextInt(255)); - } - public static void mockRandom() - { - RANDOM.setSeed(5); - } - public static int calculateTransparency(int percentTransparent) - { - int opacity = (percentTransparent * 255) / 100; - return (255 - opacity); - } - public static Color getTransparentVersion(Color color, int percentTransparency) - { - return new Color(color.getRed(), color.getGreen(), color.getBlue(), calculateTransparency(percentTransparency)); - } -} \ No newline at end of file diff --git a/src/org/teachingextensions/logo/MultiTurtlePanel.java b/src/org/teachingextensions/logo/MultiTurtlePanel.java deleted file mode 100644 index ef81600..0000000 --- a/src/org/teachingextensions/logo/MultiTurtlePanel.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.teachingextensions.logo; - -import java.awt.BasicStroke; -import java.awt.Cursor; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.RenderingHints; -import java.awt.geom.AffineTransform; -import java.awt.geom.Line2D; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.ImageIcon; -import javax.swing.JFrame; - -import org.teachingextensions.logo.Turtle.Animals; -import org.teachingextensions.windows.ProgramWindow; - -/** - * Use this window when you want to put more than one turtle on the same window - */ -@SuppressWarnings("serial") -public class MultiTurtlePanel extends TurtlePanel -{ - private List turtles; - private Image image; - private Animals animal; - public MultiTurtlePanel() - { - turtles = new ArrayList(); - } - /** - * Adds a turtle instance to a window - *
Example: {@code multiTurtlePanel.addTurtle(myTurtle)}
- * - * @param turtle - * A turtle instance - */ - public void addTurtle(Turtle turtle) - { - this.turtles.add(turtle); - turtle.setPanel(this); - } - /** - * Shows a window that can hold more than one turtle - *
Example: {@code multiTurtlePanel.showPanel( )}
- * - */ - public void showPanel() - { - JFrame frame = new JFrame("So Many Turtles"); - frame.getContentPane().add(this); - ProgramWindow.createStandardFrame(frame); - this.repaint(); - } - @Override - public void paint(Graphics g) - { - super.paint(g); - paintLines((Graphics2D) g); - paintTurtle((Graphics2D) g); - } - private void paintLines(Graphics2D g) - { - for (Turtle turtle : turtles) - { - if (turtle == null) { return; } - g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); - g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); - g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); - for (LineSegment l : turtle.getTrail()) - { - if (l != null) - { - g.setColor(l.getColor()); - g.setStroke(new BasicStroke(l.getWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); - g.draw(new Line2D.Double(l.getStart().x, l.getStart().y, l.getEnd().x, l.getEnd().y)); - } - } - } - } - private void paintTurtle(Graphics2D g) - { - for (Turtle turtle : turtles) - { - if (turtle == null || turtle.isHidden()) { return; } - Image image = getImage(); - int xCenter = image.getWidth(null) / 2; - int yCenter = image.getHeight(null) / 2; - int x = turtle.getX() - xCenter; - int y = turtle.getY() - yCenter; - AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(turtle.getHeadingInDegrees()), - xCenter, yCenter); - AffineTransform move = AffineTransform.getTranslateInstance(x, y); - move.concatenate(rotate); - g.drawImage(image, move, null); - } - } - public synchronized Image getImage() - { - if (image == null) - { - setAnimal(Animals.Turtle); - } - return image; - } - public synchronized Animals getAnimal() - { - if (animal == null) - { - setAnimal(Animals.Turtle); - } - return animal; - } - /** - * Sets the Animal - *
Example: {@code multiTurtlePanel.setAnimal(animal)}
- * - * @see Animals - */ - public synchronized void setAnimal(Animals animal) - { - this.animal = animal; - image = new ImageIcon(this.getClass().getResource(animal + ".png")).getImage(); - } - public void setCursor(int cursor) - { - this.setCursor(Cursor.getPredefinedCursor(cursor)); - } - public void ___() - { - // blank for the DeepDive - } -} diff --git a/src/org/teachingextensions/logo/Pizza.java b/src/org/teachingextensions/logo/Pizza.java deleted file mode 100644 index 1b864e9..0000000 --- a/src/org/teachingextensions/logo/Pizza.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.teachingextensions.logo; - -import java.util.ArrayList; - -/** - * - * The Pizza allows you to make different sizes and kinds of pizza! - */ -public class Pizza -{ - private ArrayList toppings = new ArrayList(); - private boolean cooked; - private int slices = 2; - /** - * Adds a topping to a pizza - *
Example: {@code pizza.addTopping(Topping.Spam)}
- * - * @param topping - * A topping from the list - */ - public void addTopping(Topping topping) - { - this.toppings.add(topping); - } - /** - * Checks to see if a pizza has a particular kind of topping - *
Example: {@code pizza.hasTopping(topping)}
- * - */ - public boolean hasTopping(Topping topping) - { - for (Topping toppingToday : toppings) - { - if (toppingToday == topping) { return true; } - } - return false; - } - /** - * Cooks a pizza - *
Example: {@code pizza.cook()}
- * - */ - public void cook() - { - this.cooked = true; - } - /** - * Checks whether a pizza was cooked - *
Example: {@code pizza.wasCooked()}
- * - * @return whether or not the pizza has been cooked already - */ - public boolean wasCooked() - { - return this.cooked; - } - public void ____() - { - } - /** - * Checks whether you can take a slice of pizza or not - *
Example: {@code pizza.takeSlice()}
- * - * @return whether or not the pizza has any more slices to take - * If there are still slices, takes one slice - */ - public boolean takeSlice() - { - if (0 < this.slices) - { - this.slices--; - return true; - } - return false; - } - /** - * Adds more slices to a pizza - *
Example: {@code pizza.superSizeIt()}
- * - */ - public void superSizeIt() - { - this.slices = 8; - } -} diff --git a/src/org/teachingextensions/logo/Turtle.zip b/src/org/teachingextensions/logo/Turtle.zip deleted file mode 100644 index 97581e6..0000000 Binary files a/src/org/teachingextensions/logo/Turtle.zip and /dev/null differ diff --git a/src/org/teachingextensions/logo/Turtle/ExplodedTurtle.png b/src/org/teachingextensions/logo/Turtle/ExplodedTurtle.png deleted file mode 100644 index 0850d19..0000000 Binary files a/src/org/teachingextensions/logo/Turtle/ExplodedTurtle.png and /dev/null differ diff --git a/src/org/teachingextensions/logo/Wheel.java b/src/org/teachingextensions/logo/Wheel.java deleted file mode 100644 index 1aaab79..0000000 --- a/src/org/teachingextensions/logo/Wheel.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.teachingextensions.logo; - -import java.util.ArrayList; -import java.util.List; - -import org.teachingextensions.approvals.lite.util.NumberUtils; - -/** - * A Wheel is a List with no ending on beginning
- * - * Example: {@code - * Wheel names = new Wheel(); - * names.add("Chocolate"); - * names.add("Peanut Butter"); - * for(int i = 0; i < 6; i++) > { - * String name = names.next(); - * System.out.print(name + " "); - * } - * } - * Would result in :
- * Chocolate Peanut Butter Chocolate Peanut Butter Chocolate Peanut Butter - * - * @param - */ -public class Wheel -{ - private List list = new ArrayList(); - private int index = 0; - public Wheel(T... loadWith) - { - for (T t : loadWith) - { - add(t); - } - } - public Wheel() - { - } - public void add(T i) - { - list.add(i); - } - public T next() - { - assertNonEmpty(); - if (index >= list.size()) - { - index = 0; - } - T t = list.get(index++); - return t; - } - private void assertNonEmpty() - { - if (list.isEmpty()) - { - String message = "I call shenanigans!!!\nThis Wheel is empty\nYou can NOT get something from the Wheel before you've added anything to it."; - throw new RuntimeException(message); - } - } - public T getRandomFrom() - { - assertNonEmpty(); - int index = NumberUtils.getRandomInt(0, list.size()); - return list.get(index); - } - public void empty() - { - list.clear(); - index = 0; - } -} diff --git a/src/org/teachingextensions/utils/VirtualProctor.java b/src/org/teachingextensions/utils/VirtualProctor.java deleted file mode 100644 index a7355dc..0000000 --- a/src/org/teachingextensions/utils/VirtualProctor.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.teachingextensions.utils; - -import java.io.File; - -import org.teachingextensions.approvals.lite.util.StringUtils; -import org.teachingextensions.approvals.lite.util.io.FileUtils; - -/** - * - * Virtual Proctor allows you to see what all the TKPJava coders are making - */ -public class VirtualProctor -{ - public static class internals - { - private static final String FILE_NAME = ".virtual_proctor.txt"; - public static String getName() - { - String name = getCustomName(); - if (name == null) - { - name = getComputerName(); - } - if (name == null) - { - name = getUserName(); - } - return name; - } - private static String getCustomName() - { - File file = new File(FILE_NAME); - if (file.exists()) { return FileUtils.readFileWithSuppressedExceptions(file).trim(); } - return null; - } - public static String getComputerName() - { - return System.getenv("COMPUTERNAME"); - } - public static String getUserName() - { - return System.getenv("USER"); - } - public static void resetName() - { - File file = new File(FILE_NAME); - if (file.exists()) - { - file.delete(); - } - } - /** - * Allows you to set the displayed username in Virtual Proctor - *
Example: {@code virtualProctor.setName(name)}
- * - * @param name - * A name that is displayed for the user in the Virtual Proctor client - */ - public static void setName(String name) - { - if (StringUtils.isEmpty(name)) { return; } - FileUtils.writeFileQuietly(new File(FILE_NAME), name); - } - } - public static void setName(String name) - { - internals.setName(name); - } -} diff --git a/src/org/teachingextensions/windows/MessageBox.java b/src/org/teachingextensions/windows/MessageBox.java deleted file mode 100644 index cfed73c..0000000 --- a/src/org/teachingextensions/windows/MessageBox.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.teachingextensions.windows; - -import javax.swing.JOptionPane; - -import org.teachingextensions.approvals.lite.util.NumberUtils; - -/** - * - *
- *
- *
- *
- *
- * MessageBox is a pop up window
- * Use it to collect numerical input from the user
- * Or to display a message for the user to read.
- */ -public class MessageBox -{ - private static MessageBoxInstance messageBox = new MessageBoxInstance(); - /** - * Prints a request for a numerical input to the window.
- * Example: {@code int cookies = MessageBox.askForNumericalInput("How many cookies would you like?");} - * - * @param message - * the text to be displayed - * @return the user input - */ - public static int askForNumericalInput(String message) - { - return messageBox.askForNumericalInput(message); - } - /** - * Prints a request for a text input to the window.
- * Example: {@code String name = MessageBox.askForTextInput("What is your nickname?");} - * - * @param message - * the text to be displayed - * @return the user input - */ - public static String askForTextInput(String message) - { - return messageBox.askForTextInput(message); - } - /** - * Prints the message to the window.
- * Example: {@code MessageBox.showMessage("Girl programmers rule!");} - * - * @param message - * the text to be displayed - */ - public static void showMessage(String message) - { - messageBox.showMessage(message); - } - public static void mock(MessageBoxInstance messageBoxMock) - { - messageBox = messageBoxMock; - } - public static class MessageBoxInstance - { - public int askForNumericalInput(String message) - { - String input = askForTextInput(message); - return NumberUtils.load(input, 0); - } - public String askForTextInput(String message) - { - return JOptionPane.showInputDialog(message); - } - public void showMessage(String message) - { - JOptionPane.showMessageDialog(null, message); - } - } -} diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java b/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java deleted file mode 100644 index 6538dbf..0000000 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.teachingkidsprogramming.recipes.quizzes.tests; - -import junit.framework.TestCase; - -import org.teachingextensions.approvals.lite.reporters.ClipboardReporter; -import org.teachingextensions.approvals.lite.reporters.DiffReporter; -import org.teachingextensions.approvals.lite.reporters.UseReporter; -import org.teachingextensions.logo.Colors; -import org.teachingextensions.logo.Tortoise; -import org.teachingextensions.logo.Turtle; -import org.teachingextensions.logo.utils.TortoiseUtils; -import org.teachingkidsprogramming.recipes.quizzes.graders.SimpleSquareQuizGrader; -import org.teachingkidsprogramming.recipes.quizzes.graders.SquareQuiz; - -@UseReporter({ClipboardReporter.class, DiffReporter.class}) -public class SimpleSquareQuizTest extends TestCase -{ - public static class SimpleSquareCorrectQuiz implements SquareQuiz - { - public void question1() - { - // Move the tortoise 110 pixels - Tortoise.move(110); - } - public void question2() - { - // Turn the tortoise 1/5 of 360 degrees to the right - Tortoise.turn(360 / 5); - } - public void question3() - { - // Change the color the tortoise draws to yellow - Tortoise.setPenColor(Colors.Yellows.Yellow); - } - public void question4() - { - // Change the width of the line the tortoise draws to 5 pixels - Tortoise.setPenWidth(5); - } - } - public void testCorrect() throws Exception - { - SimpleSquareQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED; - new SimpleSquareQuizGrader().grade(new SimpleSquareCorrectQuiz()); - TortoiseUtils.verifyForOs(); - } - public static class SimpleSquareIncorrectQuiz implements SquareQuiz - { - public void question1() - { - // Move the tortoise 110 pixels - Tortoise.move(75); - } - public void question2() - { - // Turn the tortoise 1/5 of 360 degrees to the right - Tortoise.turn(360.0 / 6); - } - public void question3() - { - // Change the color the tortoise draws to yellow - Tortoise.setPenColor(Colors.Yellows.Gold); - } - public void question4() - { - // Change the width of the line the tortoise draws to 5 pixels - Tortoise.setPenWidth(9); - } - } - public void testIncorrect() throws Exception - { - SimpleSquareQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED; - new SimpleSquareQuizGrader().grade(new SimpleSquareIncorrectQuiz()); - TortoiseUtils.verifyForOs(); - } -} diff --git a/src/org/teachingkidsprogramming/section02methods/TriangleShell.java b/src/org/teachingkidsprogramming/section02methods/TriangleShell.java deleted file mode 100644 index 1bc49b8..0000000 --- a/src/org/teachingkidsprogramming/section02methods/TriangleShell.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.teachingkidsprogramming.section02methods; - -public class TriangleShell -{ - private static int length; - public static void main(String[] args) - { - // Show the tortoise --#1 - // Make the tortoise go as fast as possible --#6 - // Do the following 60 times --#7.1 - // Change the pen color of the line the tortoise draws to a random color --#9 - // Increase the current length of the side by 4 pixels --#8 - // - // drawTriangle (recipe below) --#5.1 - // ------------- Recipe for drawTriangle --#5.2 - // Do the following 3 times --#3.1 - // Move the tortoise the current length of a side --#4 - // Turn the tortoise 1/3rd of 360 degrees --#2 - // Repeat --#3.2 - // ------------- End of drawTriangle recipe --#5.3 - // - // Turn the tortoise 1/60th of 360 degrees to the right --#10 - // Repeat --#7.2 - } - // Related Videos: - // Sub recipe-> Method : http://youtu.be/C6fnqjceVcs -} diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl.png deleted file mode 100644 index 19f863f..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl1a.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl1a.png deleted file mode 100644 index b608d62..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl1a.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl1b.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl1b.png deleted file mode 100644 index b43a459..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl1b.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl1c.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl1c.png deleted file mode 100644 index b53eb50..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl1c.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl2a.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl2a.png deleted file mode 100644 index b0bfb4e..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl2a.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl2b.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl2b.png deleted file mode 100644 index 13ab9bd..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl2b.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl2c.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl2c.png deleted file mode 100644 index 4f62187..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl2c.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl3a.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl3a.png deleted file mode 100644 index 4f8271d..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl3a.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl3b.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl3b.png deleted file mode 100644 index 7693c23..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl3b.png and /dev/null differ diff --git a/src/org/teachingkidsprogramming/section08tdd/Batgirl3c.png b/src/org/teachingkidsprogramming/section08tdd/Batgirl3c.png deleted file mode 100644 index 7a2cb0e..0000000 Binary files a/src/org/teachingkidsprogramming/section08tdd/Batgirl3c.png and /dev/null differ diff --git a/src/test/java/org/teachingextensions/approvals/lite/FileApproverTest.java b/src/test/java/org/teachingextensions/approvals/lite/FileApproverTest.java new file mode 100644 index 0000000..66f2e9d --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/FileApproverTest.java @@ -0,0 +1,35 @@ +package org.teachingextensions.approvals.lite; + +import junit.framework.TestCase; +import org.teachingextensions.approvals.lite.util.io.FileUtils; + +import java.io.File; +import java.io.IOException; + + +public class FileApproverTest extends TestCase +{ + public void testApproveTextFile() throws Exception + { + File f1 = createFile("1"); + File f2 = createFile("2"); + assertFalse("files are different", FileApprover.approveTextFile(f1, f2)); + f2 = createFile("1"); + assertTrue("files are the same", FileApprover.approveTextFile(f1, f2)); + } + public void testApproveTextFileWithNonExsitantFile() throws Exception + { + File f1 = createFile("1"); + File f2 = new File("no exist"); + assertTrue(f1.exists()); + assertFalse(f2.exists()); + assertFalse(FileApprover.approveTextFile(f1, f2)); + } + + private File createFile(String string) throws IOException + { + File f = File.createTempFile("avc", "t"); + FileUtils.writeFile(f, string); + return f; + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/ReportInjectionTest.java b/src/test/java/org/teachingextensions/approvals/lite/ReportInjectionTest.java new file mode 100644 index 0000000..520ef75 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/ReportInjectionTest.java @@ -0,0 +1,31 @@ +package org.teachingextensions.approvals.lite; + +import junit.framework.TestCase; + +import org.teachingextensions.approvals.lite.reporters.QuietReporter; +import org.teachingextensions.approvals.lite.reporters.UseReporter; + +@UseReporter(QuietReporter.class) +public class ReportInjectionTest extends TestCase +{ + public static class MyReporter implements ApprovalFailureReporter, ApprovalFailureOverrider + { + @Override + public void report(String received, String approved) throws Exception + { + } + @Override + public boolean askToChangeReceivedToApproved(String received, String approved) throws Exception + { + called = getClass(); + return true; + } + } + private static Class called = null; + @UseReporter(MyReporter.class) + public void testOverrideReporterByParameter() throws Exception + { + Approvals.verify("some text"); + assertEquals(MyReporter.class, called); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/ReporterFactoryTest.java b/src/test/java/org/teachingextensions/approvals/lite/ReporterFactoryTest.java new file mode 100644 index 0000000..cc12981 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/ReporterFactoryTest.java @@ -0,0 +1,20 @@ +package org.teachingextensions.approvals.lite; + +import junit.framework.TestCase; + +import org.teachingextensions.approvals.lite.reporters.DiffReporter; +import org.teachingextensions.approvals.lite.reporters.QuietReporter; + +public class ReporterFactoryTest extends TestCase +{ + public void testReporters() throws Exception + { + assertEquals(DiffReporter.class, getClassFor("txt")); + assertEquals(DiffReporter.class, getClassFor("html")); + assertEquals(QuietReporter.class, getClassFor("other")); + } + private Class getClassFor(String type) + { + return ReporterFactory.get(type).getClass(); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/namer/JUnit4StackTraceNamerTest.java b/src/test/java/org/teachingextensions/approvals/lite/namer/JUnit4StackTraceNamerTest.java new file mode 100644 index 0000000..70678d7 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/namer/JUnit4StackTraceNamerTest.java @@ -0,0 +1,23 @@ +package org.teachingextensions.approvals.lite.namer; + +import java.io.File; + +import org.junit.Assert; +import org.junit.Test; + +public class JUnit4StackTraceNamerTest +{ + @Test + public void testGetApprovalName() throws Exception + { + JUnitStackTraceNamer name = new JUnitStackTraceNamer(); + Assert.assertEquals("JUnit4StackTraceNamerTest.testGetApprovalName", name.getApprovalName()); + } + @Test + public void testGetSourceFilePath() throws Exception + { + JUnitStackTraceNamer name = new JUnitStackTraceNamer(); + File file = new File(name.getSourceFilePath() + "JUnitStackTraceNamerTest.java"); + Assert.assertTrue(file.exists()); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamerTest.java b/src/test/java/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamerTest.java new file mode 100644 index 0000000..48e2dfd --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/namer/JUnitStackTraceNamerTest.java @@ -0,0 +1,30 @@ +package org.teachingextensions.approvals.lite.namer; + +import java.io.File; + +import junit.framework.TestCase; + + +public class JUnitStackTraceNamerTest extends TestCase +{ + public void testGetApprovalName() throws Exception + { + JUnitStackTraceNamer name = new JUnitStackTraceNamer(); + assertEquals("JUnitStackTraceNamerTest.testGetApprovalName", name.getApprovalName()); + } + public void testGetSourceFilePath() throws Exception + { + JUnitStackTraceNamer name = new JUnitStackTraceNamer(); + File file = new File(name.getSourceFilePath() + "JUnitStackTraceNamerTest.java"); + assertTrue(file.exists()); + } + public void testEmbeddedStackName() + { + JUnitStackTraceNamer namer = createJUnitStackNamer(); + assertEquals("JUnitStackTraceNamerTest.testEmbeddedStackName", namer.getApprovalName()); + } + private JUnitStackTraceNamer createJUnitStackNamer() + { + return new JUnitStackTraceNamer(); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.java b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.java new file mode 100644 index 0000000..6c2851e --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.java @@ -0,0 +1,15 @@ +package org.teachingextensions.approvals.lite.reporters; + +import junit.framework.TestCase; + + +public class GenericDiffReporterTest extends TestCase { + public void testFileExtensions() throws Exception { + assertTrue(new GenericDiffReporter("", "").isFileExtensionHandled("a.txt")); + } + + public void testProgramsExist() throws Exception { + assertFalse(new GenericDiffReporter("this_should_never_exist", "").isWorkingInThisEnvironment("a.txt")); + } + +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testCommandLineFileNames.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testCommandLineFileNames.approved.txt new file mode 100644 index 0000000..21ec1e1 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testCommandLineFileNames.approved.txt @@ -0,0 +1,4 @@ +[regular.txt, true] = regular.txt +[with spaces.txt, true] = "with spaces.txt" +[regular.txt, false] = regular.txt +[with spaces.txt, false] = with\ spaces.txt diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testIsImage.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testIsImage.approved.txt new file mode 100644 index 0000000..1f8c0bb --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testIsImage.approved.txt @@ -0,0 +1,4 @@ +Image: a.png = true +Image: a.viz.png = true +Image: a.bitmap = false +Image: a.txt = false diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testP4Merge.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testP4Merge.approved.txt new file mode 100644 index 0000000..c70c765 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testP4Merge.approved.txt @@ -0,0 +1 @@ +/Applications/p4merge.app/Contents/MacOS/p4merge %s %s \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTkDiff.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTkDiff.approved.txt new file mode 100644 index 0000000..c4b1300 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTkDiff.approved.txt @@ -0,0 +1 @@ +/Applications/TkDiff.app/Contents/MacOS/tkdiff %s %s diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTortoiseDiff.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTortoiseDiff.approved.txt new file mode 100644 index 0000000..8d4d649 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testTortoiseDiff.approved.txt @@ -0,0 +1 @@ +C:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe %s %s \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testWinMerge.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testWinMerge.approved.txt new file mode 100644 index 0000000..bc14963 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/GenericDiffReporterTest.testWinMerge.approved.txt @@ -0,0 +1 @@ +C:\Program Files\WinMerge\WinMergeU.exe %s %s \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.java b/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.java new file mode 100644 index 0000000..8d7bc17 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.java @@ -0,0 +1,46 @@ +package org.teachingextensions.approvals.lite.reporters; + +import junit.framework.TestCase; + + +public class ReporterChainingTest extends TestCase +{ + public static class NonWorkingReporter implements EnvironmentAwareReporter + { + @Override + public void report(String received, String approved) throws Exception + { + } + @Override + public boolean isWorkingInThisEnvironment(String forFile) + { + return false; + } + } + public static class WorkingReporter implements EnvironmentAwareReporter + { + public String received; + @Override + public void report(String received, String approved) throws Exception + { + this.received = received; + } + @Override + public boolean isWorkingInThisEnvironment(String forFile) + { + return true; + } + } + public void testFirstWorkingReporter() throws Exception + { + WorkingReporter workingReporter = new WorkingReporter(); + WorkingReporter workingReporter2 = new WorkingReporter(); + FirstWorkingReporter reporter = new FirstWorkingReporter(new NonWorkingReporter(), workingReporter, + workingReporter2); + reporter.report("Hello", "world"); + assertEquals("Hello", workingReporter.received); + assertNull(workingReporter2.received); + assertTrue(reporter.isWorkingInThisEnvironment("")); + } + +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.testMultiReporterWithExceptions.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.testMultiReporterWithExceptions.approved.txt new file mode 100644 index 0000000..18893b4 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/ReporterChainingTest.testMultiReporterWithExceptions.approved.txt @@ -0,0 +1,3 @@ +Multiple Exceptions Thrown: + #1): Error + #2): Error \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/UseReporterTest.java b/src/test/java/org/teachingextensions/approvals/lite/reporters/UseReporterTest.java new file mode 100644 index 0000000..4eaefc8 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/UseReporterTest.java @@ -0,0 +1,20 @@ +package org.teachingextensions.approvals.lite.reporters; + +import junit.framework.TestCase; +import org.teachingextensions.approvals.lite.ReporterFactory; +import org.teachingextensions.approvals.lite.reporters.windows.TortoiseTextDiffReporter; + + +public class UseReporterTest extends TestCase +{ + @UseReporter(TortoiseTextDiffReporter.class) + public void testUseReporter() throws Exception + { + assertEquals(TortoiseTextDiffReporter.class, ReporterFactory.getFromAnnotation().getClass()); + } + @UseReporter({TortoiseTextDiffReporter.class, ClipboardReporter.class}) + public void testMultipleUseReporter() throws Exception + { + assertEquals(MultiReporter.class, ReporterFactory.getFromAnnotation().getClass()); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/a.png b/src/test/java/org/teachingextensions/approvals/lite/reporters/a.png new file mode 100644 index 0000000..b26067d Binary files /dev/null and b/src/test/java/org/teachingextensions/approvals/lite/reporters/a.png differ diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/a.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/a.txt new file mode 100644 index 0000000..1f7518a --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/a.txt @@ -0,0 +1,3 @@ +1 +a +I \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/b.png b/src/test/java/org/teachingextensions/approvals/lite/reporters/b.png new file mode 100644 index 0000000..0a31fa7 Binary files /dev/null and b/src/test/java/org/teachingextensions/approvals/lite/reporters/b.png differ diff --git a/src/test/java/org/teachingextensions/approvals/lite/reporters/b.txt b/src/test/java/org/teachingextensions/approvals/lite/reporters/b.txt new file mode 100644 index 0000000..44c532c --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/reporters/b.txt @@ -0,0 +1,3 @@ +1 +b +I \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/ClassUtilsTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/ClassUtilsTest.java new file mode 100644 index 0000000..2dfdb5b --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/ClassUtilsTest.java @@ -0,0 +1,22 @@ +package org.teachingextensions.approvals.lite.util; + +import java.io.File; +import java.io.Serializable; + +import junit.framework.TestCase; + + +public class ClassUtilsTest extends TestCase +{ + public void testHasMethod() throws Exception + { + assertFalse(ClassUtils.hasMethod(Serializable.class, "getClass")); + assertTrue(ClassUtils.hasMethod(Object.class, "getClass")); + } + public void testSourceDirectory() throws Exception + { + File dir = ClassUtils.getSourceDirectory(getClass()); + assertNotNull(dir); + assertTrue(dir.isDirectory()); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.java new file mode 100644 index 0000000..ef410e7 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.java @@ -0,0 +1,114 @@ +package org.teachingextensions.approvals.lite.util; + +import junit.framework.TestCase; + +import java.util.Arrays; +import java.util.Calendar; +import java.util.GregorianCalendar; + + +public class DateDifferenceTest extends TestCase { + private static final long YEAR_MS = 1000 * 60 * 60 * 24 * 365L; + private static final long MONTH_MS = 1000 * 60 * 60 * 24 * 30L; + // private static final long WEEK_MS = 1000 * 60 * 60 * 24 * 7L; + private static final long DAY_MS = 1000 * 60 * 60 * 24L; + String[] unitsArray = { + "Year", "Years", "Month", "Months", "Week", "Weeks", "Day", "Days", "Hour", "Hours", "Min", "Mins", "Sec", + "Secs", "Milli", "Millis"}; + private GetTimeTextUseCase getTimeTextUseCases[] = { + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, YEAR_MS, + "1 Year, 0 Months, 0 Weeks, 0 Days, 0 Hours"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, YEAR_MS + + (2 * MONTH_MS), "1 Year, 2 Months, 0 Weeks, 0 Days, 0 Hours"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, YEAR_MS + - (2 * MONTH_MS), "10 Months, 0 Weeks, 5 Days, 0 Hours, 0 Mins"), + new GetTimeTextUseCase(2, Calendar.YEAR, Calendar.MILLISECOND, "", "ago", unitsArray, YEAR_MS + + (2 * MONTH_MS), "1 Year, 2 Months ago"), + new GetTimeTextUseCase(5, Calendar.MILLISECOND, Calendar.MILLISECOND, "now", "", unitsArray, YEAR_MS + + (2 * MONTH_MS), "36720000000 Millis"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.DATE, "today", "ago", unitsArray, DAY_MS, "1 Day ago"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.DATE, "today", "ago", unitsArray, DAY_MS - 1, "today"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, new GregorianCalendar( + 2003, 1, 28), /* 1 = Feb */ + new GregorianCalendar(2003, 2, 31), "1 Month, 0 Weeks, 1 Day, 0 Hours, 0 Mins"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, new GregorianCalendar( + 2003, 1, 1), new GregorianCalendar(2003, 2, 1), "4 Weeks, 0 Days, 0 Hours, 0 Mins, 0 Secs"), + new GetTimeTextUseCase(5, Calendar.YEAR, Calendar.MILLISECOND, "now", "", unitsArray, new GregorianCalendar( + 2004, 1, 1), new GregorianCalendar(2004, 2, 1), "4 Weeks, 1 Day, 0 Hours, 0 Mins, 0 Secs"), + new GetTimeTextUseCase(5, Calendar.MONTH, Calendar.MILLISECOND, "now", "", unitsArray, + new GregorianCalendar(1990, 0, 1), /* 7 * 12 should be 84 */ + new GregorianCalendar(1997, 0, 1), "85 Months, 1 Week, 0 Days, 0 Hours, 0 Mins"), + new GetTimeTextUseCase(5, Calendar.DATE, Calendar.MILLISECOND, "now", "", unitsArray, new GregorianCalendar( + 2004, 3, 3, 10, 0), /* Daylight savings is in month '3' */ + new GregorianCalendar(2004, 3, 4, 11, 0), "1 Day, 0 Hours, 0 Mins, 0 Secs, 0 Millis")}; + + + /** + * ******************************************************************* + */ + public void testGetTimeText() { + + for (GetTimeTextUseCase getTimeTextUseCase : getTimeTextUseCases) { + int amount = getTimeTextUseCase.amount; + int maxUnit = getTimeTextUseCase.maxUnit; + int minUnit = getTimeTextUseCase.minUnit; + String nowText = getTimeTextUseCase.nowText; + String agoText = getTimeTextUseCase.agoText; + String units[] = getTimeTextUseCase.units; + long milli = getTimeTextUseCase.milli; + String expected = getTimeTextUseCase.expected; + DateDifference d = new DateDifference(milli); + assertEquals("getTimeText(" + amount + ", " + maxUnit + ", " + minUnit + ", " + nowText + ", " + agoText + + ", " + Arrays.toString(units) + ") on " + milli, expected, + d.getTimeText(amount, maxUnit, minUnit, nowText, agoText, units)); + } + } + + /** + * ******************************************************************* + */ + private class GetTimeTextUseCase { + int amount; + int maxUnit; + int minUnit; + String nowText; + String agoText; + String units[]; + long milli; + String expected; + + public GetTimeTextUseCase(int amount, int maxUnit, int minUnit, String nowText, String agoText, + String[] units, long milli, String expected) { + this.init(amount, maxUnit, minUnit, nowText, agoText, units, milli, expected); + } + + /** + * ******************************************************************* + */ + public GetTimeTextUseCase(int amount, int maxUnit, int minUnit, String nowText, String agoText, + String[] units, Calendar date1, Calendar date2, String expected) { + long time = date1.getTimeInMillis() - date2.getTimeInMillis(); + if (time < 0) { + time = -time; + } + this.init(amount, maxUnit, minUnit, nowText, agoText, units, time, expected); + } + + /** + * ******************************************************************* + */ + private void init(int amount, int maxUnit, int minUnit, String nowText, String agoText, String[] units, + long milli, String expected) { + this.amount = amount; + this.maxUnit = maxUnit; + this.minUnit = minUnit; + this.nowText = nowText; + this.agoText = agoText; + this.units = units; + this.milli = milli; + this.expected = expected; + } + } + /***********************************************************************/ + /***********************************************************************/ +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.testFeburaryAndDaylightSavingsTime.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.testFeburaryAndDaylightSavingsTime.approved.txt new file mode 100644 index 0000000..efbc72a --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/DateDifferenceTest.testFeburaryAndDaylightSavingsTime.approved.txt @@ -0,0 +1,28 @@ +02/01/2010, 03/01/2010 => 28 Days, 0 Hours +02/02/2010, 03/02/2010 => 28 Days, 0 Hours +02/03/2010, 03/03/2010 => 28 Days, 0 Hours +02/04/2010, 03/04/2010 => 28 Days, 0 Hours +02/05/2010, 03/05/2010 => 28 Days, 0 Hours +02/06/2010, 03/06/2010 => 28 Days, 0 Hours +02/07/2010, 03/07/2010 => 28 Days, 0 Hours +02/08/2010, 03/08/2010 => 28 Days, 0 Hours +02/09/2010, 03/09/2010 => 28 Days, 0 Hours +02/10/2010, 03/10/2010 => 28 Days, 0 Hours +02/11/2010, 03/11/2010 => 28 Days, 0 Hours +02/12/2010, 03/12/2010 => 28 Days, 0 Hours +02/13/2010, 03/13/2010 => 28 Days, 0 Hours +02/14/2010, 03/14/2010 => 28 Days, 0 Hours +02/15/2010, 03/15/2010 => 27 Days, 23 Hours +02/16/2010, 03/16/2010 => 27 Days, 23 Hours +02/17/2010, 03/17/2010 => 27 Days, 23 Hours +02/18/2010, 03/18/2010 => 27 Days, 23 Hours +02/19/2010, 03/19/2010 => 27 Days, 23 Hours +02/20/2010, 03/20/2010 => 27 Days, 23 Hours +02/21/2010, 03/21/2010 => 27 Days, 23 Hours +02/22/2010, 03/22/2010 => 27 Days, 23 Hours +02/23/2010, 03/23/2010 => 27 Days, 23 Hours +02/24/2010, 03/24/2010 => 27 Days, 23 Hours +02/25/2010, 03/25/2010 => 27 Days, 23 Hours +02/26/2010, 03/26/2010 => 27 Days, 23 Hours +02/27/2010, 03/27/2010 => 27 Days, 23 Hours +02/28/2010, 03/28/2010 => 27 Days, 23 Hours diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/SearchingFileFilterTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/SearchingFileFilterTest.java new file mode 100644 index 0000000..73aeb8c --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/SearchingFileFilterTest.java @@ -0,0 +1,22 @@ +package org.teachingextensions.approvals.lite.util; + +import junit.framework.TestCase; +import org.teachingextensions.approvals.lite.util.SearchingFileFilter; + +public class SearchingFileFilterTest extends TestCase +{ + public void testStar() throws Exception + { + assertFalse(new SearchingFileFilter("*","something").accept(".anything", true)); + assertFalse(new SearchingFileFilter("*","something").accept("anythingFile", false)); + assertTrue(new SearchingFileFilter("*","something").accept("anythingDirectory", true)); + assertFalse(new SearchingFileFilter("something").accept("anything", true)); + assertTrue(new SearchingFileFilter("*","temp.htm").accept("temp.htm", false)); + } + public void testFinding() throws Exception + { + assertEquals("[*, temp.htm]", new SearchingFileFilter("*","temp.htm").getSubset("a").toString()); + assertEquals("[b]", new SearchingFileFilter("*","a","b").getSubset("a").toString()); + + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.java new file mode 100644 index 0000000..4540ca3 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.java @@ -0,0 +1,99 @@ +package org.teachingextensions.approvals.lite.util; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class StringUtilsTest +{ + @Test + public void testStripNonNumericFromNull() throws Exception + { + String s = StringUtils.stripNonNumeric(null, false, false); + assertEquals("", s); + } + @Test + public void testStripNonNumericAllAlpha() throws Exception + { + String s = StringUtils.stripNonNumeric("a", false, false); + assertEquals("", s); + } + @Test + public void testStripNonNumeric() throws Exception + { + String s = StringUtils.stripNonNumeric("a1", false, false); + assertEquals("1", s); + } + @Test + public void testStripNonNumericWithNegativeDisallowed() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1", false, false); + assertEquals("1", s); + } + @Test + public void testStripNonNumericWithNegative() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1", false, true); + assertEquals("-1", s); + } + @Test + public void testStripNonNumericWithDecimalDisallowed() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1.0", false, false); + assertEquals("10", s); + } + @Test + public void testStripNonNumericWithDecimalAllowed() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1.0", true, false); + assertEquals("1.0", s); + } + @Test + public void testStripNonNumericWithExponent() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1.0e2", true, false); + assertEquals("1.0e2", s); + } + @Test + public void testStripNonNumericWithNegativeExponent() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1.0e-2", true, false); + assertEquals("1.0e-2", s); + } + @Test + public void testStripNonNumericWithExponentDisallowed() throws Exception + { + String s = StringUtils.stripNonNumeric("a-1.0e2", false, false); + assertEquals("102", s); + } + @Test + public void testIsNullNonZero() throws Exception + { + assertFalse(StringUtils.isNonZero(null)); + } + @Test + public void testIsEmptyNonZero() throws Exception + { + assertFalse(StringUtils.isNonZero(" ")); + } + @Test + public void testIsNonZero() throws Exception + { + assertTrue(StringUtils.isNonZero(" a ")); + } + @Test + public void testNullIsEmpty() throws Exception + { + assertTrue(StringUtils.isEmpty(null)); + } + @Test + public void testEmptyIsEmpty() throws Exception + { + assertTrue(StringUtils.isEmpty(" ")); + } + @Test + public void testIsEmpty() throws Exception + { + assertFalse(StringUtils.isEmpty(" a ")); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.testWriteToString.approved.txt b/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.testWriteToString.approved.txt new file mode 100644 index 0000000..0a7d5bc --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/StringUtilsTest.testWriteToString.approved.txt @@ -0,0 +1,3 @@ +things[0] = 1 +things[1] = null +things[2] = hi diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/TupleTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/TupleTest.java new file mode 100644 index 0000000..c2fedba --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/TupleTest.java @@ -0,0 +1,13 @@ +package org.teachingextensions.approvals.lite.util; + +import junit.framework.TestCase; + +public class TupleTest extends TestCase +{ + public void test() + { + Tuple tupleOne = new Tuple<>("foo", 1); + assertEquals("string first", "foo", tupleOne.getFirst()); + assertEquals("integer second", 1, (int) tupleOne.getSecond()); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/io/FileUtilsTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/io/FileUtilsTest.java new file mode 100644 index 0000000..a82b993 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/io/FileUtilsTest.java @@ -0,0 +1,14 @@ +package org.teachingextensions.approvals.lite.util.io; + +import junit.framework.TestCase; + + +/** + * A static class of convenience functions for Files + */ +public class FileUtilsTest extends TestCase { + public void testExtensionWithDot() throws Exception { + assertEquals(".txt", FileUtils.getExtensionWithDot("c:\\some.thing\\there\\a.txt")); + } + +} \ No newline at end of file diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullArgumentTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullArgumentTest.java new file mode 100644 index 0000000..a72edb1 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullArgumentTest.java @@ -0,0 +1,26 @@ +package org.teachingextensions.approvals.lite.util.velocity; + +import junit.framework.TestCase; + +import org.apache.velocity.context.Context; + +public class VelocityNullArgumentTest extends TestCase implements ContextAware +{ + public void testOverloadedMethodFound() throws Exception + { + } + @Override + public void setupContext(Context context) + { + context.put("object", this); + context.put("nullValue", null); + } + public static String getClass(Class c) + { + return c == null ? "you got null" : c.getName(); + } + public static String getClass(String c) + { + return c == null ? "you got null" : c.getClass().getName(); + } +} diff --git a/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullSetTest.java b/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullSetTest.java new file mode 100644 index 0000000..4836dd4 --- /dev/null +++ b/src/test/java/org/teachingextensions/approvals/lite/util/velocity/VelocityNullSetTest.java @@ -0,0 +1,24 @@ +package org.teachingextensions.approvals.lite.util.velocity; + +import junit.framework.TestCase; + +import org.apache.velocity.context.Context; + + +public class VelocityNullSetTest extends TestCase implements ContextAware +{ + /***********************************************************************/ + public void testField() throws Exception + { + //assertEquals("not null, null", VelocityParser.parseString("#set($s = $value)$s,#set($s = $nullValue)$s", this)); + } + /***********************************************************************/ + public void setupContext(Context context) + { + context.put("value", "not null"); + context.put("nullValue", null); + context.put("array", new String[]{"1", "2", null, null, "5"}); + } +} +/***********************************************************************/ +/***********************************************************************/ diff --git a/src/test/java/org/teachingextensions/logo/AStarPlayerTest.java b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.java new file mode 100644 index 0000000..365f67b --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.java @@ -0,0 +1,44 @@ +package org.teachingextensions.logo; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.approvals.lite.reporters.macosx.BeyondCompareReporter; + +@UseReporter(BeyondCompareReporter.class) +public class AStarPlayerTest extends PuzzlePlayerTest { + + @Override + protected PuzzlePlayer getPlayer(Puzzle puzzle) { + return new AStarPlayer(puzzle); + } + + /** + * Produces a puzzle solution + */ + @Test + public void solve_puzzle() throws Exception { + verifySolution(); + } + + /** + * Solve longer puzzle + */ + @Test + public void solve_longer_puzzle() throws Exception { + verifyLongSolution(); + } + + /** + * Solve jumbo puzzle + */ + @Test + public void solve_jumbo_puzzle() throws Exception { + int[] cells = {8, 0, 1, 2, 3, 4, 5, 6, 7}; + Puzzle p = new Puzzle(cells); + PuzzlePlayer b = getPlayer(p); + + PuzzleState s = b.solve(); + Approvals.verifyAll("From " + p + " to " + s.getPuzzle(), s.getHistory()); + } +} diff --git a/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_jumbo_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_jumbo_puzzle.approved.txt new file mode 100644 index 0000000..19d9dd5 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_jumbo_puzzle.approved.txt @@ -0,0 +1,25 @@ +From [8, 0, 1, 2, 3, 4, 5, 6, 7] to [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Right = 1} +{Down = 3} +{Left = -1} +{Down = 3} +{Right = 1} +{Right = 1} +{Up = -3} +{Left = -1} +{Left = -1} +{Down = 3} +{Right = 1} +{Up = -3} +{Up = -3} +{Right = 1} +{Down = 3} +{Down = 3} +{Left = -1} +{Left = -1} +{Up = -3} +{Right = 1} +{Right = 1} +{Down = 3} diff --git a/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_longer_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_longer_puzzle.approved.txt new file mode 100644 index 0000000..fb4b824 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_longer_puzzle.approved.txt @@ -0,0 +1,16 @@ +From [0, 1, 2, 3, 4, 8, 5, 6, 7] to [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Down = 3} +{Left = -1} +{Left = -1} +{Up = -3} +{Right = 1} +{Down = 3} +{Right = 1} +{Up = -3} +{Left = -1} +{Left = -1} +{Down = 3} +{Right = 1} +{Right = 1} diff --git a/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_puzzle.approved.txt new file mode 100644 index 0000000..a560eb2 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/AStarPlayerTest.solve_puzzle.approved.txt @@ -0,0 +1,4 @@ +Solve [0, 1, 2, 3, 4, 5, 6, 8, 7] + + +{Right = 1} diff --git a/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.java b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.java new file mode 100644 index 0000000..baa79f7 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.java @@ -0,0 +1,44 @@ +package org.teachingextensions.logo; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.approvals.lite.reporters.macosx.BeyondCompareReporter; + +@UseReporter(BeyondCompareReporter.class) +public class BreadthFirstPlayerTest extends PuzzlePlayerTest { + + @Override + protected PuzzlePlayer getPlayer(Puzzle puzzle) { + return new BreadthFirstPlayer(puzzle); + } + + /** + * Produces a puzzle solution + */ + @Test + public void solve_puzzle() throws Exception { + verifySolution(); + } + + /** + * Solve longer puzzle + */ + @Test + public void solve_longer_puzzle() throws Exception { + verifyLongSolution(); + } + + /** + * Solve jumbo puzzle + */ + @Test + public void solve_jumbo_puzzle() throws Exception { + int[] cells = {8, 0, 1, 2, 3, 4, 5, 6, 7}; + Puzzle p = new Puzzle(cells); + PuzzlePlayer b = getPlayer(p); + + PuzzleState s = b.solve(); + Approvals.verifyAll("From " + p + " to " + s.getPuzzle(), s.getHistory()); + } +} diff --git a/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_jumbo_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_jumbo_puzzle.approved.txt new file mode 100644 index 0000000..19d9dd5 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_jumbo_puzzle.approved.txt @@ -0,0 +1,25 @@ +From [8, 0, 1, 2, 3, 4, 5, 6, 7] to [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Right = 1} +{Down = 3} +{Left = -1} +{Down = 3} +{Right = 1} +{Right = 1} +{Up = -3} +{Left = -1} +{Left = -1} +{Down = 3} +{Right = 1} +{Up = -3} +{Up = -3} +{Right = 1} +{Down = 3} +{Down = 3} +{Left = -1} +{Left = -1} +{Up = -3} +{Right = 1} +{Right = 1} +{Down = 3} diff --git a/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_longer_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_longer_puzzle.approved.txt new file mode 100644 index 0000000..fb4b824 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_longer_puzzle.approved.txt @@ -0,0 +1,16 @@ +From [0, 1, 2, 3, 4, 8, 5, 6, 7] to [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Down = 3} +{Left = -1} +{Left = -1} +{Up = -3} +{Right = 1} +{Down = 3} +{Right = 1} +{Up = -3} +{Left = -1} +{Left = -1} +{Down = 3} +{Right = 1} +{Right = 1} diff --git a/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_puzzle.approved.txt new file mode 100644 index 0000000..a560eb2 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/BreadthFirstPlayerTest.solve_puzzle.approved.txt @@ -0,0 +1,4 @@ +Solve [0, 1, 2, 3, 4, 5, 6, 8, 7] + + +{Right = 1} diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.java b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.java new file mode 100644 index 0000000..49750d9 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.java @@ -0,0 +1,102 @@ +package org.teachingextensions.logo; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; + +public class MultiTurtlePanelTest +{ + @Test + public void testPaintNoTurtles() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + Approvals.verify(panel); + } + @Test + public void testPaintOneTurtle() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(new Turtle()); + Approvals.verify(panel); + } + @Test + public void testPaintWithGhostTurtle() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(null); + panel.addTurtle(new Turtle()); + Approvals.verify(panel); + } + @Test + public void testPaintWithHiddenTurtle() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + Turtle hiddenTurtle = new Turtle(); + hiddenTurtle.hide(); + panel.addTurtle(hiddenTurtle); + panel.addTurtle(new Turtle()); + Approvals.verify(panel); + } + @Test + public void testPaintWithTwoTurtle() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + Turtle crouchingTurtle = new Turtle(); + crouchingTurtle.setX(35); + crouchingTurtle.setY(35); + panel.addTurtle(crouchingTurtle); + panel.addTurtle(new Turtle()); + Approvals.verify(panel); + } + @Test + public void testTwoTurtlesDrawBeforeAdding() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + Turtle turtle = new Turtle(); + turtle.setSpeed(Integer.MIN_VALUE); + turtle.move(100); + turtle.drawStar(50); + Turtle crouchingTurtle = new Turtle(); + crouchingTurtle.setSpeed(Integer.MIN_VALUE); + crouchingTurtle.setX(35); + crouchingTurtle.setY(35); + crouchingTurtle.drawStar(50); + panel.addTurtle(crouchingTurtle); + panel.addTurtle(turtle); + Approvals.verify(panel); + } + @Test + public void testPaint() + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(null); + Turtle turtle = new Turtle(); + panel.addTurtle(turtle); + turtle.setSpeed(10); + turtle.move(100); + Approvals.verify(panel); + } + @Test + public void testAddGhostTurtle() throws Exception + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(null); + assertEquals(0, panel.getTurtleCount()); + } + @Test + public void testAddTurtle() throws Exception + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(new Turtle()); + assertEquals(1, panel.getTurtleCount()); + } + @Test + public void testSetAnimal() throws Exception + { + MultiTurtlePanel panel = new MultiTurtlePanel(); + panel.addTurtle(new Turtle()); + panel.setAnimal(Turtle.Animals.ExplodedTurtle); + Approvals.verify(panel); + } +} diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaint.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaint.approved.png new file mode 100644 index 0000000..60c8933 Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaint.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintNoTurtles.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintNoTurtles.approved.png new file mode 100644 index 0000000..a5c86b8 Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintNoTurtles.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png new file mode 100644 index 0000000..8546cea Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png+ b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png+ new file mode 100644 index 0000000..8546cea Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintOneTurtle.approved.png+ differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithGhostTurtle.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithGhostTurtle.approved.png new file mode 100644 index 0000000..8546cea Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithGhostTurtle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithHiddenTurtle.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithHiddenTurtle.approved.png new file mode 100644 index 0000000..8546cea Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithHiddenTurtle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithTwoTurtle.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithTwoTurtle.approved.png new file mode 100644 index 0000000..d20d0a1 Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testPaintWithTwoTurtle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testSetAnimal.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testSetAnimal.approved.png new file mode 100644 index 0000000..077dacc Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testSetAnimal.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawBeforeAdding.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawBeforeAdding.approved.png new file mode 100644 index 0000000..f82da95 Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawBeforeAdding.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawWithOne.approved.png b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawWithOne.approved.png new file mode 100644 index 0000000..e571686 Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/MultiTurtlePanelTest.testTwoTurtlesDrawWithOne.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.java b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.java new file mode 100644 index 0000000..be70e33 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.java @@ -0,0 +1,71 @@ +package org.teachingextensions.logo; + +import java.util.Queue; +import java.util.Stack; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; +import org.teachingextensions.approvals.lite.reporters.ClipboardReporter; +import org.teachingextensions.approvals.lite.reporters.DiffReporter; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.logo.PuzzleState.Direction; + +@UseReporter({DiffReporter.class, ClipboardReporter.class}) +public class PuzzleBoardTest +{ + /** + * A puzzle board shows the initial puzzle. + */ + @Test + public void show_initial_puzzle() throws Exception + { + int[] cells = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + PuzzleBoard board = new PuzzleBoard(new Puzzle(cells), null); + PuzzleWindow window = new PuzzleWindow(); + window.add(board); + Approvals.verify(window); + } + /** + * A puzzle board shows the provided puzzle + */ + @Test + public void show_provided_puzzle() throws Exception + { + int[] cells = {0, 1, 2, 3, 4, 5, 6, 8, 7}; + PuzzleBoard board = new PuzzleBoard(new Puzzle(cells), null); + PuzzleWindow window = new PuzzleWindow(board); + Approvals.verify(window); + } + @Test + public void testCreateSolution() throws Exception + { + int[] cells = {0, 1, 2, 3, 4, 5, 6, 8, 7}; + Puzzle puzzle = new Puzzle(cells); + Stack history = new Stack<>(); + history.push(Direction.Right); + PuzzleState state = new PuzzleState(puzzle, history); + Queue moves = PuzzleBoard.createSolution(state, puzzle); + Approvals.verifyAll("Solution", moves); + } + @Test + public void testCreateTwoStepSolution() throws Exception + { + int[] cells = {0, 1, 2, 3, 8, 5, 6, 4, 7}; + Puzzle puzzle = new Puzzle(cells); + Stack history = new Stack<>(); + history.push(Direction.Down); + history.push(Direction.Right); + PuzzleState state = new PuzzleState(puzzle, history); + Queue moves = PuzzleBoard.createSolution(state, puzzle); + Approvals.verifyAll("Solution", moves); + } + @Test + public void testSwap() throws Exception + { + int[] cells = {0, 1, 2, 3, 4, 5, 6, 8, 7}; + Puzzle puzzle = new Puzzle(cells); + PuzzleBoard board = new PuzzleBoard(puzzle, null); + board.swap(8, 7); + Approvals.verify(board.toString()); + } +} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_initial_puzzle.approved.png b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_initial_puzzle.approved.png new file mode 100644 index 0000000..6d6faae Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_initial_puzzle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_provided_puzzle.approved.png b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_provided_puzzle.approved.png new file mode 100644 index 0000000..e2d053d Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.show_provided_puzzle.approved.png differ diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateSolution.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateSolution.approved.txt new file mode 100644 index 0000000..e31d7d0 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateSolution.approved.txt @@ -0,0 +1,4 @@ +Solution + + +TileMove{start=8, end=7} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateTwoStepSolution.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateTwoStepSolution.approved.txt new file mode 100644 index 0000000..0f288f5 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testCreateTwoStepSolution.approved.txt @@ -0,0 +1,5 @@ +Solution + + +TileMove{start=7, end=4} +TileMove{start=8, end=7} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testSwap.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testSwap.approved.txt new file mode 100644 index 0000000..2c9a030 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleBoardTest.testSwap.approved.txt @@ -0,0 +1,4 @@ +PuzzleBoard +Tile{35, 35}, Tile{162, 35}, Tile{289, 35} +Tile{35, 162}, Tile{162, 162}, Tile{289, 162} +Tile{35, 289}, Tile{289, 289}, null diff --git a/src/test/java/org/teachingextensions/logo/PuzzlePlayerTest.java b/src/test/java/org/teachingextensions/logo/PuzzlePlayerTest.java new file mode 100644 index 0000000..c14ce2e --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzlePlayerTest.java @@ -0,0 +1,30 @@ +package org.teachingextensions.logo; + +import org.teachingextensions.approvals.lite.Approvals; + +/** + * Test a puzzle player + */ +public abstract class PuzzlePlayerTest { + + + protected void verifySolution() { + int[] cells = {0, 1, 2, 3, 4, 5, 6, 8, 7}; + Puzzle p = new Puzzle(cells); + PuzzlePlayer b = getPlayer(p); + PuzzleState s = b.solve(); + Approvals.verifyAll("Solve " + p, s.getHistory()); + } + + protected abstract PuzzlePlayer getPlayer(Puzzle puzzle); + + + protected void verifyLongSolution() { + int[] cells = {0, 1, 2, 3, 4, 8, 5, 6, 7}; + Puzzle p = new Puzzle(cells); + PuzzlePlayer b = getPlayer(p); + + PuzzleState s = b.solve(); + Approvals.verifyAll("From " + p + " to " + s.getPuzzle(), s.getHistory()); + } +} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.java b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.java new file mode 100644 index 0000000..98a3eda --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.java @@ -0,0 +1,152 @@ +package org.teachingextensions.logo; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.approvals.lite.reporters.macosx.BeyondCompareReporter; + +import java.util.Stack; + +import static org.junit.Assert.*; + +@UseReporter(BeyondCompareReporter.class) +public class PuzzleStateTest { + + private static Puzzle getSolvedPuzzle() { + int[] solved = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + return new Puzzle(solved); + } + + private static Puzzle getPuzzle(int blank) { + return getSolvedPuzzle().swapBlank(blank); + } + + /** + * The state can tell you what moves are allowed from cell to cell + */ + @Test + public void state_has_move_directions() { + Approvals.verifyAll("Directions", PuzzleState.Direction.values()); + } + + /** + * The state can tell you if it is a solution to the puzzle + */ + @Test + public void state_can_be_solution() { + Puzzle p = getSolvedPuzzle(); + PuzzleState s = new PuzzleState(p); + assertTrue(s.isSolution()); + } + + /** + * The state can tell you all possible next moves for its puzzle. + */ + @Test + public void tells_you_next_moves() { + PuzzleState s = new PuzzleState(getSolvedPuzzle()); + Approvals.verifyAll("Branches for " + s, s.getBranches()); + } + + /** + * Or we can see the next moves from the top right corner + */ + @Test + public void moves_from_top_right() { + Puzzle p = getPuzzle(2); + PuzzleState s = new PuzzleState(p); + Approvals.verifyAll("Branches for " + s, s.getBranches()); + } + + /** + * Or we can see the next moves from the center + */ + @Test + public void moves_from_center() { + Puzzle p = getPuzzle(4); + PuzzleState s = new PuzzleState(p); + Approvals.verifyAll("Branches for " + s, s.getBranches()); + } + + /** + * Finally, lets see what moves we can do from top center. + */ + @Test + public void moves_from_top_center() { + PuzzleState s = new PuzzleState(getPuzzle(1)); + Approvals.verifyAll("Branches for " + s, s.getBranches()); + } + + /** + * The actual cost is zero when there is no history + */ + @Test + public void actual_cost() { + PuzzleState s = new PuzzleState(getSolvedPuzzle()); + assertEquals(0, s.getActualCost()); + } + + /** + * The actual cost is the number of steps in the the history + */ + @Test + public void actual_cost_is_actual_steps() { + Stack history = new Stack<>(); + history.add(PuzzleState.Direction.Right); + history.add(PuzzleState.Direction.Right); + PuzzleState s = new PuzzleState(getSolvedPuzzle(), history); + assertEquals(2, s.getActualCost()); + } + + /** + * Is not equal to another state when the puzzles are different + */ + @Test + public void not_equal_to_state_with_different_puzzle() { + PuzzleState a = new PuzzleState(getSolvedPuzzle()); + PuzzleState b = new PuzzleState(getPuzzle(2)); + assertNotEquals(a, b); + } + + /** + * The estimated cost is zero when puzzle is solved. + */ + @Test + public void estimated_cost_is_zero_when_solved() { + PuzzleState s = new PuzzleState(getSolvedPuzzle()); + assertEquals(0, s.getEstimatedCost()); + } + + /** + * The estimated cost is the distance to goal when the puzzle is not solved. + */ + @Test + public void estimated_cost_is_goal_distance_when_unsolved() { + Puzzle p = getPuzzle(7); + p = p.swapBlank(4); + PuzzleState s = new PuzzleState(p); + assertEquals(p.getDistanceToGoal(), s.getEstimatedCost()); + } + + /** + * Is equal to another state when the puzzles are the same + */ + @Test + public void equal_to_state_with_same_puzzle() { + PuzzleState a = new PuzzleState(getPuzzle(1)); + PuzzleState b = new PuzzleState(getPuzzle(1)); + assertTrue(a.equals(b)); + } + + /** + * Is equal to state with same puzzle even when history differs + */ + @Test + public void equal_even_with_different_history() { + Stack history = new Stack<>(); + history.add(PuzzleState.Direction.Right); + PuzzleState a = new PuzzleState(getPuzzle(3), history); + PuzzleState b = new PuzzleState(getPuzzle(3)); + assertEquals(a, b); + } +} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_center.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_center.approved.txt new file mode 100644 index 0000000..e36cfd3 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_center.approved.txt @@ -0,0 +1,7 @@ +Branches for [0, 1, 2, 3, 8, 5, 6, 7, 4] + + +{Left = -1} to [0, 1, 2, 8, 3, 5, 6, 7, 4] +{Right = 1} to [0, 1, 2, 3, 5, 8, 6, 7, 4] +{Up = -3} to [0, 8, 2, 3, 1, 5, 6, 7, 4] +{Down = 3} to [0, 1, 2, 3, 7, 5, 6, 8, 4] diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_center.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_center.approved.txt new file mode 100644 index 0000000..d061279 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_center.approved.txt @@ -0,0 +1,6 @@ +Branches for [0, 8, 2, 3, 4, 5, 6, 7, 1] + + +{Left = -1} to [8, 0, 2, 3, 4, 5, 6, 7, 1] +{Right = 1} to [0, 2, 8, 3, 4, 5, 6, 7, 1] +{Down = 3} to [0, 4, 2, 3, 8, 5, 6, 7, 1] diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_right.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_right.approved.txt new file mode 100644 index 0000000..1aa30f5 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.moves_from_top_right.approved.txt @@ -0,0 +1,5 @@ +Branches for [0, 1, 8, 3, 4, 5, 6, 7, 2] + + +{Left = -1} to [0, 8, 1, 3, 4, 5, 6, 7, 2] +{Down = 3} to [0, 1, 5, 3, 4, 8, 6, 7, 2] diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.state_has_move_directions.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.state_has_move_directions.approved.txt new file mode 100644 index 0000000..685f8f4 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.state_has_move_directions.approved.txt @@ -0,0 +1,7 @@ +Directions + + +{Left = -1} +{Right = 1} +{Up = -3} +{Down = 3} diff --git a/src/test/java/org/teachingextensions/logo/PuzzleStateTest.tells_you_next_moves.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.tells_you_next_moves.approved.txt new file mode 100644 index 0000000..a6f08ab --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleStateTest.tells_you_next_moves.approved.txt @@ -0,0 +1,5 @@ +Branches for [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Left = -1} to [0, 1, 2, 3, 4, 5, 6, 8, 7] +{Up = -3} to [0, 1, 2, 3, 4, 8, 6, 7, 5] diff --git a/src/test/java/org/teachingextensions/logo/PuzzleTest.get_coordinates_for_cell.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_coordinates_for_cell.approved.txt new file mode 100644 index 0000000..f662eab --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_coordinates_for_cell.approved.txt @@ -0,0 +1,7 @@ +Positions + + +java.awt.Point[x=0,y=0] +java.awt.Point[x=1,y=1] +java.awt.Point[x=2,y=2] +java.awt.Point[x=1,y=0] diff --git a/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_cells.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_cells.approved.txt new file mode 100644 index 0000000..3fd4b7e --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_cells.approved.txt @@ -0,0 +1,7 @@ +Distances + + +2 +4 +1 +3 diff --git a/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_positions.approved.txt b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_positions.approved.txt new file mode 100644 index 0000000..3fd4b7e --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleTest.get_distances_between_positions.approved.txt @@ -0,0 +1,7 @@ +Distances + + +2 +4 +1 +3 diff --git a/src/test/java/org/teachingextensions/logo/PuzzleTest.java b/src/test/java/org/teachingextensions/logo/PuzzleTest.java new file mode 100644 index 0000000..392947b --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/PuzzleTest.java @@ -0,0 +1,172 @@ +package org.teachingextensions.logo; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.Approvals; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.approvals.lite.reporters.macosx.BeyondCompareReporter; + +import java.awt.*; +import java.util.ArrayList; +import java.util.Arrays; + +import static org.junit.Assert.*; + +@UseReporter(BeyondCompareReporter.class) +public class PuzzleTest { + private static int[] getSolution() { + return new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8}; + } + + private static int[] swap(int[] cells, int i, int j) { + int[] copy = Arrays.copyOf(cells, cells.length); + int x = copy[i]; + copy[i] = copy[j]; + copy[j] = x; + return copy; + } + + /** + * A puzzle has a solution + */ + @Test + public void puzzle_has_solution() { + int[] solved = getSolution(); + Puzzle p = new Puzzle(solved); + assertTrue(p.isSolved()); + } + + /** + * A puzzle might not be solved + */ + @Test + public void puzzle_not_solved() { + int[] cells = getSolution(); + cells = swap(cells, 3, 4); + Puzzle p = new Puzzle(cells); + assertFalse(p.isSolved()); + } + + /** + * A puzzle has a blank + */ + @Test + public void puzzle_has_blank() { + Puzzle p = new Puzzle(getSolution()); + assertEquals(8, p.getBlankIndex()); + } + + /** + * Blank can be anywhere + */ + @Test + public void blank_can_be_anywhere() { + int[] cells = swap(getSolution(), 8, 2); + Puzzle p = new Puzzle(cells); + assertEquals(2, p.getBlankIndex()); + } + + /** + * Puzzle can swap blank for you + */ + @Test + public void puzzle_can_swap_blank() { + Puzzle p = new Puzzle(getSolution()); + Puzzle c = p.swapBlank(4); + assertEquals(4, c.getBlankIndex()); + } + + /** + * Puzzle can swap blank for you + */ + @Test + public void blank_swap_leaves_original_as_is() { + Puzzle p = new Puzzle(getSolution()); + p.swapBlank(4); + assertEquals(8, p.getBlankIndex()); + } + + /** + * Puzzle is not equal to a puzzle with different cells. + */ + @Test + public void different_cells_means_different_puzzle() { + Puzzle a = new Puzzle(getSolution()); + Puzzle b = new Puzzle(swap(getSolution(), 8, 2)); + assertNotEquals(a, b); + } + + /** + * Puzzle is equal to a puzzle with the same cells. + */ + @Test + public void same_cells_means_same_puzzle() { + Puzzle a = new Puzzle(swap(getSolution(), 8, 3)); + Puzzle b = new Puzzle(swap(getSolution(), 8, 3)); + assertEquals(a, b); + } + + /** + * Puzzle can tell you the game coordinates of a cell + */ + @Test + public void get_coordinates_for_cell() throws Exception { + ArrayList positions = new ArrayList<>(); + positions.add(Puzzle.getPosition(0)); + positions.add(Puzzle.getPosition(4)); + positions.add(Puzzle.getPosition(8)); + positions.add(Puzzle.getPosition(1)); + Approvals.verifyAll("Positions", positions); + } + + /** + * Puzzle can tell you the distance between two coordinates + */ + @Test + public void get_distances_between_positions() { + Point[] positions = new Point[4]; + positions[0] = Puzzle.getPosition(0); + positions[1] = Puzzle.getPosition(4); + positions[2] = Puzzle.getPosition(8); + positions[3] = Puzzle.getPosition(1); + ArrayList distances = new ArrayList<>(); + distances.add(Puzzle.getDistance(positions[0], positions[1])); + distances.add(Puzzle.getDistance(positions[0], positions[2])); + distances.add(Puzzle.getDistance(positions[1], positions[3])); + distances.add(Puzzle.getDistance(positions[3], positions[2])); + Approvals.verifyAll("Distances", distances); + } + + /** + * Puzzle can automatically convert cells to positions for you + */ + @Test + public void get_distances_between_cells() { + ArrayList distances = new ArrayList<>(); + distances.add(Puzzle.getDistance(0, 4)); + distances.add(Puzzle.getDistance(0, 8)); + distances.add(Puzzle.getDistance(4, 1)); + distances.add(Puzzle.getDistance(1, 8)); + Approvals.verifyAll("Distances", distances); + } + + /** + * Solved puzzle is at the goal. + */ + @Test + public void distance_to_solution_is_zero_when_solved() { + Puzzle p = new Puzzle(getSolution()); + assertEquals(0, p.getDistanceToGoal()); + } + + /** + * Unsolved puzzle is the sum of the distances for each cell + */ + @Test + public void sum_of_cell_distances_is_distance_to_goal() { + int[] cells = swap(getSolution(), 7, 8); + cells = swap(cells, 8, 5); + Puzzle p = new Puzzle(cells); + assertEquals(4, p.getDistanceToGoal()); + } + +} diff --git a/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.java b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.java new file mode 100644 index 0000000..55767b6 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.java @@ -0,0 +1,29 @@ +package org.teachingextensions.logo; + +import org.junit.Test; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.approvals.lite.reporters.macosx.BeyondCompareReporter; + +@UseReporter(BeyondCompareReporter.class) +public class UniformCostPlayerTest extends PuzzlePlayerTest { + @Override + protected PuzzlePlayer getPlayer(Puzzle puzzle) { + return new UniformCostPlayer(puzzle); + } + + /** + * Produces a puzzle solution + */ + @Test + public void solve_puzzle() throws Exception { + verifySolution(); + } + + /** + * Solve longer puzzle + */ + @Test + public void solve_longer_puzzle() throws Exception { + verifyLongSolution(); + } +} diff --git a/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_longer_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_longer_puzzle.approved.txt new file mode 100644 index 0000000..fb4b824 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_longer_puzzle.approved.txt @@ -0,0 +1,16 @@ +From [0, 1, 2, 3, 4, 8, 5, 6, 7] to [0, 1, 2, 3, 4, 5, 6, 7, 8] + + +{Down = 3} +{Left = -1} +{Left = -1} +{Up = -3} +{Right = 1} +{Down = 3} +{Right = 1} +{Up = -3} +{Left = -1} +{Left = -1} +{Down = 3} +{Right = 1} +{Right = 1} diff --git a/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_puzzle.approved.txt b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_puzzle.approved.txt new file mode 100644 index 0000000..a560eb2 --- /dev/null +++ b/src/test/java/org/teachingextensions/logo/UniformCostPlayerTest.solve_puzzle.approved.txt @@ -0,0 +1,4 @@ +Solve [0, 1, 2, 3, 4, 5, 6, 8, 7] + + +{Right = 1} diff --git a/src/org/teachingextensions/logo/tests/ColorsTest.java b/src/test/java/org/teachingextensions/logo/tests/ColorsTest.java similarity index 52% rename from src/org/teachingextensions/logo/tests/ColorsTest.java rename to src/test/java/org/teachingextensions/logo/tests/ColorsTest.java index 82b5b35..5f2389b 100644 --- a/src/org/teachingextensions/logo/tests/ColorsTest.java +++ b/src/test/java/org/teachingextensions/logo/tests/ColorsTest.java @@ -2,13 +2,13 @@ import junit.framework.TestCase; -import org.teachingextensions.logo.Colors; +import org.teachingextensions.logo.PenColors; public class ColorsTest extends TestCase { public void testTransparency() throws Exception { - assertEquals(0, Colors.calculateTransparency(100)); - assertEquals(255, Colors.calculateTransparency(0)); + assertEquals(0, PenColors.calculateTransparency(100)); + assertEquals(255, PenColors.calculateTransparency(0)); } } diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.java b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.java similarity index 77% rename from src/org/teachingextensions/logo/tests/RecipeTests.java rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.java index 69c114e..a11af16 100644 --- a/src/org/teachingextensions/logo/tests/RecipeTests.java +++ b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.java @@ -7,13 +7,13 @@ import org.teachingextensions.approvals.lite.Approvals; import org.teachingextensions.approvals.lite.reporters.DelayedClipboardReporter; -import org.teachingextensions.approvals.lite.reporters.FileLauncherReporter; +import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; -import org.teachingextensions.logo.Colors; -import org.teachingextensions.logo.Wheel; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Turtle; +import org.teachingextensions.logo.Wheel; -@UseReporter({FileLauncherReporter.class, DelayedClipboardReporter.class}) +@UseReporter({DiffReporter.class, DelayedClipboardReporter.class}) public class RecipeTests extends TestCase { public void testSimpleSquare() throws Exception @@ -23,7 +23,7 @@ public void testSimpleSquare() throws Exception turtle.show(); for (int i = 0; i < 4; i++) { - turtle.setPenColor(Colors.Blues.SteelBlue); + turtle.setPenColor(PenColors.Blues.SteelBlue); turtle.move(50); turtle.turn(90); } @@ -37,7 +37,7 @@ public void testCircle() throws Exception int sides = 35; for (int i = 0; i < sides; i++) { - turtle.setPenColor(Colors.Reds.OrangeRed); + turtle.setPenColor(PenColors.Reds.OrangeRed); turtle.move(18); turtle.turn(360.0 / sides); } @@ -45,7 +45,7 @@ public void testCircle() throws Exception } public void testSpiral() throws Exception { - Color color = Colors.Purples.Violet; + Color color = PenColors.Purples.Violet; Turtle turtle = new Turtle(); turtle.setSpeed(Turtle.TEST_SPEED); for (int i = 0; i < 25; i++) @@ -53,14 +53,14 @@ public void testSpiral() throws Exception turtle.setPenColor(color); turtle.move(3 * i); turtle.turn(90); - color = Colors.darken(color); + color = PenColors.darken(color); } Approvals.verify(turtle.getImage()); } public void testFourSquare() throws Exception { Turtle turtle = new Turtle(); - Colors.mockRandom(); + PenColors.mockRandom(); turtle.setSpeed(Turtle.TEST_SPEED); for (int i = 0; i < 4; i++) { @@ -73,7 +73,7 @@ private void drawSquare(Turtle turtle) { for (int i = 0; i < 4; i++) { - turtle.setPenColor(Colors.getRandomColor()); + turtle.setPenColor(PenColors.getRandomColor()); turtle.move(50); turtle.turn(90); } @@ -83,7 +83,7 @@ public void testDigiGirlzFlower() throws Exception Turtle turtle = new Turtle(); turtle.setSpeed(Turtle.TEST_SPEED); turtle.show(); - turtle.getBackgroundWindow().setColor(Colors.Grays.Silver); + turtle.getBackgroundWindow().setColor(PenColors.Grays.Silver); Wheel palette = setupColors(); turtle.setPenWidth(3); for (int i = 0; i < 15; i++) @@ -104,7 +104,10 @@ private void drawOctogon(Turtle turtle, Wheel palette) } private Wheel setupColors() { - Color[] colors = {Colors.Reds.Red, Colors.Oranges.DarkOrange, Colors.Yellows.Gold, Colors.Yellows.Yellow}; + Color[] colors = {PenColors.Reds.Red, + PenColors.Oranges.DarkOrange, + PenColors.Yellows.Gold, + PenColors.Yellows.Yellow}; Wheel wheel = new Wheel(); wheel.add(colors[0]); wheel.add(colors[1]); @@ -125,7 +128,7 @@ public void testTriangleShell() throws Exception int length = 0; for (int i = 0; i < number; i++) { - turtle.setPenColor(Colors.getRandomColor()); + turtle.setPenColor(PenColors.getRandomColor()); length += 4; drawTriangle(turtle, length); turtle.turn(360 / number); @@ -145,9 +148,9 @@ public void testKnottedRing() throws Exception { Turtle turtle = new Turtle(); turtle.setSpeed(Turtle.TEST_SPEED); - Wheel wheel = new Wheel(Colors.Pinks.HotPink, Colors.Reds.Red, Colors.Purples.Fuchsia, - Colors.Oranges.OrangeRed, Colors.Pinks.DeepPink, Colors.Pinks.MediumVioletRed, Colors.Reds.Crimson, - Colors.Oranges.Tomato); + Wheel wheel = new Wheel(PenColors.Pinks.HotPink, PenColors.Reds.Red, PenColors.Purples.Fuchsia, + PenColors.Oranges.OrangeRed, PenColors.Pinks.DeepPink, PenColors.Pinks.MediumVioletRed, + PenColors.Reds.Crimson, PenColors.Oranges.Tomato); for (int i = 0; i < 30; i++) { turtle.setPenColor(wheel.next()); @@ -170,7 +173,7 @@ public void testTurtleTree() throws Exception Turtle turtle = new Turtle(); turtle.setSpeed(Turtle.TEST_SPEED); turtle.show(); - turtle.getBackgroundWindow().setColor(Colors.Grays.Black); + turtle.getBackgroundWindow().setColor(PenColors.Grays.Black); drawBranch(turtle, 60); Approvals.verify(turtle.getImage()); } @@ -196,12 +199,12 @@ private void drawLowerBranch(Turtle turtle, int length) private void pickColorForBranchLenth(Turtle turtle, int length) { HashMap map = new HashMap(); - map.put(10, Colors.Greens.LimeGreen); - map.put(20, Colors.Greens.ForestGreen); - map.put(30, Colors.Greens.DarkGreen); - map.put(40, Colors.Greens.Olive); - map.put(50, Colors.Browns.Sienna); - map.put(60, Colors.Browns.SaddleBrown); + map.put(10, PenColors.Greens.LimeGreen); + map.put(20, PenColors.Greens.ForestGreen); + map.put(30, PenColors.Greens.DarkGreen); + map.put(40, PenColors.Greens.Olive); + map.put(50, PenColors.Browns.Sienna); + map.put(60, PenColors.Browns.SaddleBrown); turtle.setPenColor(map.get(length)); } } diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testCircle.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testCircle.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testCircle.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testCircle.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testDigiGirlzFlower.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testDigiGirlzFlower.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testDigiGirlzFlower.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testDigiGirlzFlower.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testFourSquare.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testFourSquare.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testFourSquare.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testFourSquare.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testKnottedRing.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testKnottedRing.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testKnottedRing.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testKnottedRing.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testSimpleSquare.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testSimpleSquare.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testSimpleSquare.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testSimpleSquare.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testSpiral.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testSpiral.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testSpiral.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testSpiral.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testTriangleShell.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testTriangleShell.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testTriangleShell.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testTriangleShell.approved.png diff --git a/src/org/teachingextensions/logo/tests/RecipeTests.testTurtleTree.approved.png b/src/test/java/org/teachingextensions/logo/tests/RecipeTests.testTurtleTree.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/RecipeTests.testTurtleTree.approved.png rename to src/test/java/org/teachingextensions/logo/tests/RecipeTests.testTurtleTree.approved.png diff --git a/src/org/teachingextensions/logo/tests/TortoiseTest.java b/src/test/java/org/teachingextensions/logo/tests/TortoiseTest.java similarity index 87% rename from src/org/teachingextensions/logo/tests/TortoiseTest.java rename to src/test/java/org/teachingextensions/logo/tests/TortoiseTest.java index 281eb68..2bd2f77 100644 --- a/src/org/teachingextensions/logo/tests/TortoiseTest.java +++ b/src/test/java/org/teachingextensions/logo/tests/TortoiseTest.java @@ -5,7 +5,7 @@ import org.teachingextensions.approvals.lite.reporters.ClipboardReporter; import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; -import org.teachingextensions.logo.Colors; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -20,7 +20,7 @@ public void testSimpleSquare() throws Exception int sides = 4; for (int i = 1; i <= sides; i++) { - Tortoise.setPenColor(Colors.Blues.Blue); + Tortoise.setPenColor(PenColors.Blues.Blue); Tortoise.move(50); Tortoise.turn(90); } @@ -30,7 +30,7 @@ public void testBigWidth() throws Exception { Tortoise.setSpeed(Turtle.TEST_SPEED); Tortoise.show(); - Tortoise.setPenColor(Colors.Browns.Maroon); + Tortoise.setPenColor(PenColors.Browns.Maroon); Tortoise.setPenWidth(100); Tortoise.move(10); TortoiseUtils.verify(); diff --git a/src/org/teachingextensions/logo/tests/TortoiseTest.testBigWidth.approved.png b/src/test/java/org/teachingextensions/logo/tests/TortoiseTest.testBigWidth.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TortoiseTest.testBigWidth.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TortoiseTest.testBigWidth.approved.png diff --git a/src/org/teachingextensions/logo/tests/TortoiseTest.testSimpleSquare.approved.png b/src/test/java/org/teachingextensions/logo/tests/TortoiseTest.testSimpleSquare.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TortoiseTest.testSimpleSquare.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TortoiseTest.testSimpleSquare.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtlePanelTest.java b/src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.java similarity index 75% rename from src/org/teachingextensions/logo/tests/TurtlePanelTest.java rename to src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.java index fb280ec..90c64c0 100644 --- a/src/org/teachingextensions/logo/tests/TurtlePanelTest.java +++ b/src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.java @@ -1,16 +1,17 @@ package org.teachingextensions.logo.tests; -import junit.framework.TestCase; - +import org.junit.Test; import org.teachingextensions.approvals.lite.Approvals; import org.teachingextensions.approvals.lite.reporters.ClipboardReporter; import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; import org.teachingextensions.logo.Turtle; +import org.teachingextensions.logo.TurtlePanel; @UseReporter({ClipboardReporter.class, DiffReporter.class}) -public class TurtlePanelTest extends TestCase +public class TurtlePanelTest { + @Test public void testImageForBackground() throws Exception { Turtle turtle = TurtleUtils.getTurtle(); @@ -19,4 +20,10 @@ public void testImageForBackground() throws Exception "http://teachingkidsprogramming.org/blog/wp-content/uploads/teachingKidsProgramming_logo_sm.png"); Approvals.verify(turtle.getImage()); } + // @Test + public void testNamedPanel() + { + TurtlePanel panel = new TurtlePanel("Turtle Bay"); + Approvals.verify(panel); + } } diff --git a/src/org/teachingextensions/logo/tests/TurtlePanelTest.testImageForBackground.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.testImageForBackground.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtlePanelTest.testImageForBackground.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.testImageForBackground.approved.png diff --git a/src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.testNamedPanel.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtlePanelTest.testNamedPanel.approved.png new file mode 100644 index 0000000..e69de29 diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.java b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.java similarity index 89% rename from src/org/teachingextensions/logo/tests/TurtleTest.java rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.java index b4216db..c81db25 100644 --- a/src/org/teachingextensions/logo/tests/TurtleTest.java +++ b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.java @@ -1,17 +1,16 @@ package org.teachingextensions.logo.tests; -import java.awt.Color; - import junit.framework.TestCase; - import org.teachingextensions.approvals.lite.Approvals; import org.teachingextensions.approvals.lite.reporters.DelayedClipboardReporter; import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; import org.teachingextensions.approvals.lite.util.lambda.Function1; -import org.teachingextensions.logo.Colors; -import org.teachingextensions.logo.Wheel; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Turtle; +import org.teachingextensions.logo.Wheel; + +import java.awt.*; @UseReporter({DiffReporter.class, DelayedClipboardReporter.class}) public class TurtleTest extends TestCase @@ -73,11 +72,11 @@ public void testPentagonCrazy() throws Exception { Turtle turtle = TurtleUtils.getTurtle(); Wheel wheel = new Wheel(); - wheel.add(Colors.Blues.SteelBlue); - wheel.add(Colors.Purples.DarkMagenta); - wheel.add(Colors.Blues.DarkSlateBlue); - wheel.add(Colors.Purples.Indigo); - wheel.add(Colors.Purples.DarkOrchid); + wheel.add(PenColors.Blues.SteelBlue); + wheel.add(PenColors.Purples.DarkMagenta); + wheel.add(PenColors.Blues.DarkSlateBlue); + wheel.add(PenColors.Purples.Indigo); + wheel.add(PenColors.Purples.DarkOrchid); Wheel thickness = new Wheel(1, 2, 3); for (int i = 0; i < 200; i++) { @@ -129,4 +128,10 @@ public String call(Integer speed) } }); } + public void testClear() throws Exception + { + Turtle turtle = TurtleUtils.getTurtle(); + turtle.clear(); + Approvals.verify(turtle.getImage()); + } } diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testShow.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testClear.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testShow.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testClear.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testDelta.approved.txt b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testDelta.approved.txt similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testDelta.approved.txt rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testDelta.approved.txt diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testHide.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testHide.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testHide.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testHide.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testMove.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testMove.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testMove.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testMove.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testMove45DegreesLeft.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testMove45DegreesLeft.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testMove45DegreesLeft.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testMove45DegreesLeft.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testPenDown.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testPenDown.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testPenDown.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testPenDown.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testPentagonCrazy.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testPentagonCrazy.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testPentagonCrazy.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testPentagonCrazy.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testRotate.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testRotate.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testRotate45.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate45.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testRotate45.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate45.approved.png diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testRotate45CounterClockwise.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate45CounterClockwise.approved.png similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testRotate45CounterClockwise.approved.png rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testRotate45CounterClockwise.approved.png diff --git a/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testShow.approved.png b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testShow.approved.png new file mode 100644 index 0000000..ce2714f Binary files /dev/null and b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testShow.approved.png differ diff --git a/src/org/teachingextensions/logo/tests/TurtleTest.testSpeed.approved.txt b/src/test/java/org/teachingextensions/logo/tests/TurtleTest.testSpeed.approved.txt similarity index 100% rename from src/org/teachingextensions/logo/tests/TurtleTest.testSpeed.approved.txt rename to src/test/java/org/teachingextensions/logo/tests/TurtleTest.testSpeed.approved.txt diff --git a/src/org/teachingextensions/logo/tests/TurtleUtils.java b/src/test/java/org/teachingextensions/logo/tests/TurtleUtils.java similarity index 74% rename from src/org/teachingextensions/logo/tests/TurtleUtils.java rename to src/test/java/org/teachingextensions/logo/tests/TurtleUtils.java index 3358f30..1f4e357 100644 --- a/src/org/teachingextensions/logo/tests/TurtleUtils.java +++ b/src/test/java/org/teachingextensions/logo/tests/TurtleUtils.java @@ -2,11 +2,9 @@ import org.teachingextensions.logo.Turtle; -public class TurtleUtils -{ +public class TurtleUtils { - public static Turtle getTurtle() - { + public static Turtle getTurtle() { Turtle turtle = new Turtle(); turtle.setSpeed(Turtle.TEST_SPEED); return turtle; diff --git a/src/org/teachingextensions/logo/tests/VirtualProctorTest.java b/src/test/java/org/teachingextensions/logo/tests/VirtualProctorTest.java similarity index 83% rename from src/org/teachingextensions/logo/tests/VirtualProctorTest.java rename to src/test/java/org/teachingextensions/logo/tests/VirtualProctorTest.java index f11969f..060f043 100644 --- a/src/org/teachingextensions/logo/tests/VirtualProctorTest.java +++ b/src/test/java/org/teachingextensions/logo/tests/VirtualProctorTest.java @@ -9,7 +9,7 @@ public class VirtualProctorTest extends TestCase public void testSetName() throws Exception { VirtualProctor.internals.resetName(); - assertEquals("WIN-J2264SMJD6Q", VirtualProctor.internals.getName()); +// assertEquals("WIN-J2264SMJD6Q", VirtualProctor.internals.getName()); VirtualProctor.setName("Lynn"); assertEquals("Lynn", VirtualProctor.internals.getName()); } diff --git a/src/org/teachingextensions/logo/tests/WheelTest.java b/src/test/java/org/teachingextensions/logo/tests/WheelTest.java similarity index 100% rename from src/org/teachingextensions/logo/tests/WheelTest.java rename to src/test/java/org/teachingextensions/logo/tests/WheelTest.java diff --git a/src/org/teachingextensions/logo/tests/WheelTest.testWheel.approved.txt b/src/test/java/org/teachingextensions/logo/tests/WheelTest.testWheel.approved.txt similarity index 100% rename from src/org/teachingextensions/logo/tests/WheelTest.testWheel.approved.txt rename to src/test/java/org/teachingextensions/logo/tests/WheelTest.testWheel.approved.txt diff --git a/src/org/teachingextensions/logo/tests/colors.cpp b/src/test/java/org/teachingextensions/logo/tests/colors.cpp similarity index 100% rename from src/org/teachingextensions/logo/tests/colors.cpp rename to src/test/java/org/teachingextensions/logo/tests/colors.cpp diff --git a/src/org/teachingextensions/logo/tests/colors.html b/src/test/java/org/teachingextensions/logo/tests/colors.html similarity index 100% rename from src/org/teachingextensions/logo/tests/colors.html rename to src/test/java/org/teachingextensions/logo/tests/colors.html diff --git a/src/org/teachingextensions/logo/tests/colors.java.template b/src/test/java/org/teachingextensions/logo/tests/colors.java.template similarity index 92% rename from src/org/teachingextensions/logo/tests/colors.java.template rename to src/test/java/org/teachingextensions/logo/tests/colors.java.template index 678cfcc..79a202d 100644 --- a/src/org/teachingextensions/logo/tests/colors.java.template +++ b/src/test/java/org/teachingextensions/logo/tests/colors.java.template @@ -2,7 +2,7 @@ package org.teachingextensions.logo; import java.awt.Color; -import com.spun.util.NumberUtils; +import org.teachingextensions.approvals.lite.util.NumberUtils; /** * Every color under the diff --git a/src/org/teachingextensions/logo/tests/colors.sorted.txt b/src/test/java/org/teachingextensions/logo/tests/colors.sorted.txt similarity index 100% rename from src/org/teachingextensions/logo/tests/colors.sorted.txt rename to src/test/java/org/teachingextensions/logo/tests/colors.sorted.txt diff --git a/src/org/teachingextensions/logo/tests/colors.txt b/src/test/java/org/teachingextensions/logo/tests/colors.txt similarity index 100% rename from src/org/teachingextensions/logo/tests/colors.txt rename to src/test/java/org/teachingextensions/logo/tests/colors.txt diff --git a/src/org/teachingextensions/logo/utils/tests/SoundsDemo.java b/src/test/java/org/teachingextensions/logo/utils/tests/SoundsDemo.java similarity index 100% rename from src/org/teachingextensions/logo/utils/tests/SoundsDemo.java rename to src/test/java/org/teachingextensions/logo/utils/tests/SoundsDemo.java diff --git a/src/org/teachingextensions/setup/tests/UnzipTest.java b/src/test/java/org/teachingextensions/setup/tests/UnzipTest.java similarity index 100% rename from src/org/teachingextensions/setup/tests/UnzipTest.java rename to src/test/java/org/teachingextensions/setup/tests/UnzipTest.java diff --git a/src/org/teachingextensions/simpleparser/tests/ParserTest.java b/src/test/java/org/teachingextensions/simpleparser/tests/ParserTest.java similarity index 95% rename from src/org/teachingextensions/simpleparser/tests/ParserTest.java rename to src/test/java/org/teachingextensions/simpleparser/tests/ParserTest.java index 1c06210..ecb1909 100644 --- a/src/org/teachingextensions/simpleparser/tests/ParserTest.java +++ b/src/test/java/org/teachingextensions/simpleparser/tests/ParserTest.java @@ -8,6 +8,7 @@ import org.teachingextensions.simpleparser.Parser; @UseReporter(DiffReporter.class) +@SuppressWarnings("unused") public class ParserTest extends TestCase { private int a = 1; diff --git a/src/org/teachingextensions/simpleparser/tests/ParserTest.testSimpleParse.approved.txt b/src/test/java/org/teachingextensions/simpleparser/tests/ParserTest.testSimpleParse.approved.txt similarity index 100% rename from src/org/teachingextensions/simpleparser/tests/ParserTest.testSimpleParse.approved.txt rename to src/test/java/org/teachingextensions/simpleparser/tests/ParserTest.testSimpleParse.approved.txt diff --git a/src/org/teachingextensions/windows/tests/GraphicsWindowTest.java b/src/test/java/org/teachingextensions/windows/tests/GraphicsWindowTest.java similarity index 100% rename from src/org/teachingextensions/windows/tests/GraphicsWindowTest.java rename to src/test/java/org/teachingextensions/windows/tests/GraphicsWindowTest.java diff --git a/src/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDDTest.java b/src/test/java/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDDTest.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDDTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/completed/FizzBuzzTDDTest.java diff --git a/src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive01Test.java b/src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive01Test.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive01Test.java rename to src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive01Test.java diff --git a/src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive02Test.java b/src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive02Test.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive02Test.java rename to src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive02Test.java diff --git a/src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive03Test.java b/src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive03Test.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive03Test.java rename to src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive03Test.java diff --git a/src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive04MasteryTest.java b/src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive04MasteryTest.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive04MasteryTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive04MasteryTest.java diff --git a/src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive05RecursionTest.java b/src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive05RecursionTest.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive05RecursionTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/deepdives/tests/DeepDive05RecursionTest.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java similarity index 89% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java index 484bbf9..d75ff1b 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.java @@ -3,7 +3,7 @@ import junit.framework.TestCase; import org.teachingextensions.approvals.lite.reporters.DelayedClipboardReporter; -import org.teachingextensions.approvals.lite.reporters.FileLauncherReporter; +import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -12,26 +12,30 @@ import org.teachingkidsprogramming.recipes.quizzes.graders.AdLibsQuizGrader; import org.teachingkidsprogramming.recipes.quizzes.graders.TreeQuizGrader; -@UseReporter({DelayedClipboardReporter.class, FileLauncherReporter.class}) +@UseReporter({DelayedClipboardReporter.class, DiffReporter.class}) public class AdLibsQuizTest extends TestCase { public static class AdLibsCorrectQuiz extends AdLibsQuizAdapter { + @Override public void question1(String letter1, String letter3) { //set current value of word1 to be letter1 + 'o' + letter3 word1 = letter1 + "o" + letter3; } + @Override public void question2(String letter1) { //add the letter1 to the end of word2 word2 += letter1; } + @Override public void question3(String templateText, Object model) { //use the parser to combine the template and the model as word3 word3 = Parser.parse(templateText, model); } + @Override public void question4(Pieces pieces) { //set template4 to the template which does'g' + pieces.middle + 'e' @@ -46,15 +50,19 @@ public void testCorrect() throws Exception } public static class AdLibsIncorrectQuiz extends AdLibsQuizAdapter { + @Override public void question1(String letter1, String letter3) { } + @Override public void question2(String letter1) { } + @Override public void question3(String templateText, Object model) { } + @Override public void question4(Pieces pieces) { } diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..727c09f Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..bf8f570 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/AdLibsQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.java diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..3573001 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..3589539 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HiLowQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java similarity index 98% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java index 530c0b1..07fcb22 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.java @@ -14,6 +14,7 @@ @UseReporter({DelayedClipboardReporter.class, FileLauncherReporter.class}) public class HousesQuizTest extends TestCase { + @SuppressWarnings("unused") public static class HousesCorrectQuiz extends HousesQuizAdapter { private void small() @@ -59,6 +60,7 @@ public void testCorrect() throws Exception new HousesQuizGrader().grade(new HousesCorrectQuiz()); TortoiseUtils.verifyForOs(); } + @SuppressWarnings("unused") public static class HousesIncorrectQuiz extends HousesQuizAdapter { private int length; diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/HousesQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java similarity index 90% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java index 1309e3d..4c781fb 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.java @@ -6,7 +6,7 @@ import org.teachingextensions.approvals.lite.reporters.FileLauncherReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; import org.teachingextensions.logo.ColorWheel; -import org.teachingextensions.logo.Colors; +import org.teachingextensions.logo.PenColors; import org.teachingextensions.logo.Tortoise; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -42,13 +42,13 @@ public void question2() public void question3() { // Add lime to the color wheel - ColorWheel.addColor(Colors.Greens.Lime); + ColorWheel.addColor(PenColors.Greens.Lime); } @Override public void question4() { // Add red to the color wheel - ColorWheel.addColor(Colors.Reds.Red); + ColorWheel.addColor(PenColors.Reds.Red); } } public void testCorrect() throws Exception @@ -76,11 +76,11 @@ public void question2() } public void question3() { - ColorWheel.addColor(Colors.Greens.LimeGreen); + ColorWheel.addColor(PenColors.Greens.LimeGreen); } public void question4() { - ColorWheel.addColor(Colors.Reds.Tomato); + ColorWheel.addColor(PenColors.Reds.Tomato); } } public void testIncorrect() throws Exception diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..84a8309 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..28559b9 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/QuizBuzzTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java similarity index 89% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java index bab7ae7..480a12f 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.java @@ -3,7 +3,7 @@ import junit.framework.TestCase; import org.teachingextensions.approvals.lite.reporters.DelayedClipboardReporter; -import org.teachingextensions.approvals.lite.reporters.FileLauncherReporter; +import org.teachingextensions.approvals.lite.reporters.DiffReporter; import org.teachingextensions.approvals.lite.reporters.UseReporter; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.TortoiseUtils; @@ -12,26 +12,30 @@ import org.teachingkidsprogramming.recipes.quizzes.graders.AdLibsQuizGrader; import org.teachingkidsprogramming.recipes.quizzes.graders.TreeQuizGrader; -@UseReporter({DelayedClipboardReporter.class, FileLauncherReporter.class}) +@UseReporter({DelayedClipboardReporter.class, DiffReporter.class}) public class SimpleBubbleQuizTest extends TestCase { public static class AdLibsCorrectQuiz extends AdLibsQuizAdapter { + @Override public void question1(String letter1, String letter3) { //set current value of word1 to be letter1 + 'o' + letter3 word1 = letter1 + "o" + letter3; } + @Override public void question2(String letter1) { //add the letter1 to the end of word2 word2 += letter1; } + @Override public void question3(String templateText, Object model) { //use the parser to combine the template and the model as word3 word3 = Parser.parse(templateText, model); } + @Override public void question4(Pieces pieces) { //set template4 to the template which does'g' + pieces.middle + 'e' @@ -46,15 +50,19 @@ public void testCorrect() throws Exception } public static class AdLibsIncorrectQuiz extends AdLibsQuizAdapter { + @Override public void question1(String letter1, String letter3) { } + @Override public void question2(String letter1) { } + @Override public void question3(String templateText, Object model) { } + @Override public void question4(Pieces pieces) { } diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..727c09f Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..bf8f570 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleBubbleQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java new file mode 100644 index 0000000..ecf25c4 --- /dev/null +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.java @@ -0,0 +1,72 @@ +package org.teachingkidsprogramming.recipes.quizzes.tests; + +import junit.framework.TestCase; + +import org.teachingextensions.approvals.lite.reporters.ClipboardReporter; +import org.teachingextensions.approvals.lite.reporters.DiffReporter; +import org.teachingextensions.approvals.lite.reporters.UseReporter; +import org.teachingextensions.logo.PenColors; +import org.teachingextensions.logo.Tortoise; +import org.teachingextensions.logo.Turtle; +import org.teachingextensions.logo.utils.TortoiseUtils; +import org.teachingkidsprogramming.recipes.quizzes.graders.SimpleSquareQuizGrader; +import org.teachingkidsprogramming.recipes.quizzes.graders.SquareQuiz; + +@UseReporter({ ClipboardReporter.class, DiffReporter.class }) +public class SimpleSquareQuizTest extends TestCase { + public static class SimpleSquareCorrectQuiz implements SquareQuiz { + public void question1() { + // Move the tortoise 110 pixels + Tortoise.move(110); + } + + public void question2() { + // Turn the tortoise 1/5 of 360 degrees to the right + Tortoise.turn(360 / 5); + } + + public void question3() { + // Change the color the tortoise draws to yellow + Tortoise.setPenColor(PenColors.Yellows.Yellow); + } + + public void question4() { + // Change the width of the line the tortoise draws to 5 pixels + Tortoise.setPenWidth(5); + } + } + + public void testCorrect() throws Exception { + SimpleSquareQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED; + new SimpleSquareQuizGrader().grade(new SimpleSquareCorrectQuiz()); + TortoiseUtils.verifyForOs(); + } + + public static class SimpleSquareIncorrectQuiz implements SquareQuiz { + public void question1() { + // Move the tortoise 110 pixels + Tortoise.move(75); + } + + public void question2() { + // Turn the tortoise 1/5 of 360 degrees to the right + Tortoise.turn(360.0 / 6); + } + + public void question3() { + // Change the color the tortoise draws to yellow + Tortoise.setPenColor(PenColors.Yellows.Gold); + } + + public void question4() { + // Change the width of the line the tortoise draws to 5 pixels + Tortoise.setPenWidth(9); + } + } + + public void testIncorrect() throws Exception { + SimpleSquareQuizGrader.TURTLE_SPEED = Turtle.TEST_SPEED; + new SimpleSquareQuizGrader().grade(new SimpleSquareIncorrectQuiz()); + TortoiseUtils.verifyForOs(); + } +} diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.java similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.java diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCircle.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java similarity index 97% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java index ad3912c..bbe311f 100644 --- a/src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java +++ b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.java @@ -13,6 +13,7 @@ @UseReporter({DelayedClipboardReporter.class, DiffReporter.class}) public class TreeQuizTest extends TestCase { + @SuppressWarnings("unused") public static class TreeCorrectQuiz extends TreeQuizAdapter { // Sub question1 @@ -50,6 +51,7 @@ public void testCorrect() throws Exception new TreeQuizGrader().grade(new TreeCorrectQuiz()); TortoiseUtils.verifyForOs(); } + @SuppressWarnings("unused") public static class TreeIncorrectQuiz extends TreeQuizAdapter { // Sub question1 diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..9a053ec Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testCorrect.Windows_7.approved.png diff --git a/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..25740d9 Binary files /dev/null and b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Windows_7.approved.png b/src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Windows_7.approved.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Windows_7.approved.png rename to src/test/java/org/teachingkidsprogramming/recipes/quizzes/tests/TreeQuizTest.testIncorrect.Windows_7.approved.png diff --git a/src/test/resources/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/resources/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..95019d9 Binary files /dev/null and b/src/test/resources/AdLibsQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/AdLibsQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/AdLibsQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..95019d9 Binary files /dev/null and b/src/test/resources/AdLibsQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/resources/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..e40bbf6 Binary files /dev/null and b/src/test/resources/AdLibsQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/AdLibsQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/AdLibsQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..e40bbf6 Binary files /dev/null and b/src/test/resources/AdLibsQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/org/teachingextensions/logo/tests/ColorGeneration.testGeneration.approved.txt b/src/test/resources/ColorGeneration.testGeneration.approved.txt similarity index 99% rename from src/org/teachingextensions/logo/tests/ColorGeneration.testGeneration.approved.txt rename to src/test/resources/ColorGeneration.testGeneration.approved.txt index 48019ff..c5d9e95 100644 --- a/src/org/teachingextensions/logo/tests/ColorGeneration.testGeneration.approved.txt +++ b/src/test/resources/ColorGeneration.testGeneration.approved.txt @@ -2,7 +2,7 @@ package org.teachingextensions.logo; import java.awt.Color; -import com.spun.util.NumberUtils; +import org.teachingextensions.approvals.lite.util.NumberUtils; /** * Every color under the diff --git a/src/org/teachingextensions/logo/tests/ColorGeneration.testHtmlDisplay.approved.html b/src/test/resources/ColorGeneration.testHtmlDisplay.approved.html similarity index 100% rename from src/org/teachingextensions/logo/tests/ColorGeneration.testHtmlDisplay.approved.html rename to src/test/resources/ColorGeneration.testHtmlDisplay.approved.html diff --git a/src/test/resources/HiLowQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/HiLowQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..df938a8 Binary files /dev/null and b/src/test/resources/HiLowQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/HiLowQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/HiLowQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..f9c64e3 Binary files /dev/null and b/src/test/resources/HiLowQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/HousesQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/resources/HousesQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..528e7bb Binary files /dev/null and b/src/test/resources/HousesQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/HousesQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/HousesQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..7474126 Binary files /dev/null and b/src/test/resources/HousesQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/resources/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..95d2958 Binary files /dev/null and b/src/test/resources/HousesQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/HousesQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/HousesQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..99a80bd Binary files /dev/null and b/src/test/resources/HousesQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/ParserTest.testSimpleParse.approved.txt b/src/test/resources/ParserTest.testSimpleParse.approved.txt new file mode 100644 index 0000000..9815e21 --- /dev/null +++ b/src/test/resources/ParserTest.testSimpleParse.approved.txt @@ -0,0 +1,3 @@ +This should show + a = 1 + b = howdy \ No newline at end of file diff --git a/src/test/resources/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/resources/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..76e2d41 Binary files /dev/null and b/src/test/resources/PentagonCrazyQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..8e6d79e Binary files /dev/null and b/src/test/resources/PentagonCrazyQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..54df2a0 Binary files /dev/null and b/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..3d41d55 Binary files /dev/null and b/src/test/resources/PentagonCrazyQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/RecipeTests.testCircle.approved.png b/src/test/resources/RecipeTests.testCircle.approved.png new file mode 100644 index 0000000..9a31039 Binary files /dev/null and b/src/test/resources/RecipeTests.testCircle.approved.png differ diff --git a/src/test/resources/RecipeTests.testDigiGirlzFlower.approved.png b/src/test/resources/RecipeTests.testDigiGirlzFlower.approved.png new file mode 100644 index 0000000..6646fef Binary files /dev/null and b/src/test/resources/RecipeTests.testDigiGirlzFlower.approved.png differ diff --git a/src/test/resources/RecipeTests.testFourSquare.approved.png b/src/test/resources/RecipeTests.testFourSquare.approved.png new file mode 100644 index 0000000..a7e9361 Binary files /dev/null and b/src/test/resources/RecipeTests.testFourSquare.approved.png differ diff --git a/src/test/resources/RecipeTests.testKnottedRing.approved.png b/src/test/resources/RecipeTests.testKnottedRing.approved.png new file mode 100644 index 0000000..c85abee Binary files /dev/null and b/src/test/resources/RecipeTests.testKnottedRing.approved.png differ diff --git a/src/test/resources/RecipeTests.testSimpleSquare.approved.png b/src/test/resources/RecipeTests.testSimpleSquare.approved.png new file mode 100644 index 0000000..5740cf9 Binary files /dev/null and b/src/test/resources/RecipeTests.testSimpleSquare.approved.png differ diff --git a/src/test/resources/RecipeTests.testSpiral.approved.png b/src/test/resources/RecipeTests.testSpiral.approved.png new file mode 100644 index 0000000..2139222 Binary files /dev/null and b/src/test/resources/RecipeTests.testSpiral.approved.png differ diff --git a/src/test/resources/RecipeTests.testTriangleShell.approved.png b/src/test/resources/RecipeTests.testTriangleShell.approved.png new file mode 100644 index 0000000..c88a35e Binary files /dev/null and b/src/test/resources/RecipeTests.testTriangleShell.approved.png differ diff --git a/src/test/resources/RecipeTests.testTurtleTree.approved.png b/src/test/resources/RecipeTests.testTurtleTree.approved.png new file mode 100644 index 0000000..4a93cf5 Binary files /dev/null and b/src/test/resources/RecipeTests.testTurtleTree.approved.png differ diff --git a/src/test/resources/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/resources/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..6e64ed8 Binary files /dev/null and b/src/test/resources/SimpleSquareQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..ece11e9 Binary files /dev/null and b/src/test/resources/SimpleSquareQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/resources/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..6a13bd4 Binary files /dev/null and b/src/test/resources/SimpleSquareQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..41821a2 Binary files /dev/null and b/src/test/resources/SimpleSquareQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png b/src/test/resources/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png new file mode 100644 index 0000000..1b58cce Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testCircle.Mac_OS_X.approved.png differ diff --git a/src/test/resources/SpiderWebQuizTest.testCircle.Windows_7.approved.png b/src/test/resources/SpiderWebQuizTest.testCircle.Windows_7.approved.png new file mode 100644 index 0000000..1b58cce Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testCircle.Windows_7.approved.png differ diff --git a/src/test/resources/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png b/src/test/resources/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..bcff240 Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testCorrect.Mac_OS_X.approved.png differ diff --git a/src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.received.png b/src/test/resources/SpiderWebQuizTest.testCorrect.Mac_OS_X.received.png similarity index 100% rename from src/org/teachingkidsprogramming/recipes/quizzes/tests/SpiderWebQuizTest.testCorrect.Mac_OS_X.received.png rename to src/test/resources/SpiderWebQuizTest.testCorrect.Mac_OS_X.received.png diff --git a/src/test/resources/SpiderWebQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/SpiderWebQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..8988283 Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png b/src/test/resources/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png new file mode 100644 index 0000000..6799a25 Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testIncorrect.Mac_OS_X.approved.png differ diff --git a/src/test/resources/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..0ef9a7b Binary files /dev/null and b/src/test/resources/SpiderWebQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/TortoiseTest.testBigWidth.approved.png b/src/test/resources/TortoiseTest.testBigWidth.approved.png new file mode 100644 index 0000000..6811df4 Binary files /dev/null and b/src/test/resources/TortoiseTest.testBigWidth.approved.png differ diff --git a/src/test/resources/TortoiseTest.testSimpleSquare.approved.png b/src/test/resources/TortoiseTest.testSimpleSquare.approved.png new file mode 100644 index 0000000..b5647b3 Binary files /dev/null and b/src/test/resources/TortoiseTest.testSimpleSquare.approved.png differ diff --git a/src/test/resources/TreeQuizTest.testCorrect.Windows_7.approved.png b/src/test/resources/TreeQuizTest.testCorrect.Windows_7.approved.png new file mode 100644 index 0000000..0f5c983 Binary files /dev/null and b/src/test/resources/TreeQuizTest.testCorrect.Windows_7.approved.png differ diff --git a/src/test/resources/TreeQuizTest.testIncorrect.Windows_7.approved.png b/src/test/resources/TreeQuizTest.testIncorrect.Windows_7.approved.png new file mode 100644 index 0000000..2f9d15f Binary files /dev/null and b/src/test/resources/TreeQuizTest.testIncorrect.Windows_7.approved.png differ diff --git a/src/test/resources/TurtlePanelTest.testImageForBackground.approved.png b/src/test/resources/TurtlePanelTest.testImageForBackground.approved.png new file mode 100644 index 0000000..0285c52 Binary files /dev/null and b/src/test/resources/TurtlePanelTest.testImageForBackground.approved.png differ diff --git a/src/test/resources/TurtleTest.testDelta.approved.txt b/src/test/resources/TurtleTest.testDelta.approved.txt new file mode 100644 index 0000000..fb6fc38 --- /dev/null +++ b/src/test/resources/TurtleTest.testDelta.approved.txt @@ -0,0 +1,9 @@ +0=>[0.0, -5.0] +45=>[3.5355339059327373, -3.5355339059327378] +90=>[5.0, -3.061616997868383E-16] +135=>[3.5355339059327378, 3.5355339059327373] +180=>[6.123233995736766E-16, 5.0] +225=>[-3.5355339059327373, 3.5355339059327386] +270=>[-5.0, 9.184850993605148E-16] +315=>[-3.5355339059327386, -3.535533905932737] +360=>[-1.2246467991473533E-15, -5.0] diff --git a/src/test/resources/TurtleTest.testHide.approved.png b/src/test/resources/TurtleTest.testHide.approved.png new file mode 100644 index 0000000..374bb4d Binary files /dev/null and b/src/test/resources/TurtleTest.testHide.approved.png differ diff --git a/src/test/resources/TurtleTest.testMove.approved.png b/src/test/resources/TurtleTest.testMove.approved.png new file mode 100644 index 0000000..b7a0dd1 Binary files /dev/null and b/src/test/resources/TurtleTest.testMove.approved.png differ diff --git a/src/test/resources/TurtleTest.testMove45DegreesLeft.approved.png b/src/test/resources/TurtleTest.testMove45DegreesLeft.approved.png new file mode 100644 index 0000000..db98adf Binary files /dev/null and b/src/test/resources/TurtleTest.testMove45DegreesLeft.approved.png differ diff --git a/src/test/resources/TurtleTest.testPenDown.approved.png b/src/test/resources/TurtleTest.testPenDown.approved.png new file mode 100644 index 0000000..d5bad72 Binary files /dev/null and b/src/test/resources/TurtleTest.testPenDown.approved.png differ diff --git a/src/test/resources/TurtleTest.testPentagonCrazy.approved.png b/src/test/resources/TurtleTest.testPentagonCrazy.approved.png new file mode 100644 index 0000000..604b51c Binary files /dev/null and b/src/test/resources/TurtleTest.testPentagonCrazy.approved.png differ diff --git a/src/test/resources/TurtleTest.testRotate.approved.png b/src/test/resources/TurtleTest.testRotate.approved.png new file mode 100644 index 0000000..b3661b0 Binary files /dev/null and b/src/test/resources/TurtleTest.testRotate.approved.png differ diff --git a/src/test/resources/TurtleTest.testRotate45.approved.png b/src/test/resources/TurtleTest.testRotate45.approved.png new file mode 100644 index 0000000..080e0b5 Binary files /dev/null and b/src/test/resources/TurtleTest.testRotate45.approved.png differ diff --git a/src/test/resources/TurtleTest.testRotate45CounterClockwise.approved.png b/src/test/resources/TurtleTest.testRotate45CounterClockwise.approved.png new file mode 100644 index 0000000..6796159 Binary files /dev/null and b/src/test/resources/TurtleTest.testRotate45CounterClockwise.approved.png differ diff --git a/src/test/resources/TurtleTest.testShow.approved.png b/src/test/resources/TurtleTest.testShow.approved.png new file mode 100644 index 0000000..ce2714f Binary files /dev/null and b/src/test/resources/TurtleTest.testShow.approved.png differ diff --git a/src/test/resources/TurtleTest.testSpeed.approved.txt b/src/test/resources/TurtleTest.testSpeed.approved.txt new file mode 100644 index 0000000..28a7fc3 --- /dev/null +++ b/src/test/resources/TurtleTest.testSpeed.approved.txt @@ -0,0 +1,11 @@ +Speeds + + +-5 => I call shenanigans!!! +The speed '-5' is not between the acceptable range of [1-10] +Perhaps you should read the documentation +5 => 5 +15 => I call shenanigans!!! +The speed '15' is not between the acceptable range of [1-10] +Perhaps you should read the documentation +-2147483648 => -2147483648 diff --git a/src/test/resources/WheelTest.testWheel.approved.txt b/src/test/resources/WheelTest.testWheel.approved.txt new file mode 100644 index 0000000..31828fc --- /dev/null +++ b/src/test/resources/WheelTest.testWheel.approved.txt @@ -0,0 +1 @@ +4 - 6 - 8 - 4 - 6 - 8 - 4 - \ No newline at end of file diff --git a/src/test/resources/colors.html b/src/test/resources/colors.html new file mode 100644 index 0000000..773513e --- /dev/null +++ b/src/test/resources/colors.html @@ -0,0 +1,13 @@ +#foreach($key in $keys) + + + + + #foreach($color in $colors.get($key)) + + + + + #end +
$key
$color.getFirst()$finder.getOtherColors($colors, $key, $color.getFirst())
+#end diff --git a/src/test/resources/colors.java.template b/src/test/resources/colors.java.template new file mode 100644 index 0000000..79a202d --- /dev/null +++ b/src/test/resources/colors.java.template @@ -0,0 +1,26 @@ +package org.teachingextensions.logo; + +import java.awt.Color; + +import org.teachingextensions.approvals.lite.util.NumberUtils; + +/** + * Every color under the + * rainbow, + * and different ways to get them. + */ + public class Colors +{ +#foreach($key in $keys) +public static class $key + { + #foreach($color in $colors.get($key)) + /** + * The color $color.getFirst() + *
 
+ **/ + public static final Color $color.getFirst() = Color.decode("$color.getSecond()"); + #end + } + #end + } \ No newline at end of file diff --git a/src/test/resources/colors.sorted.txt b/src/test/resources/colors.sorted.txt new file mode 100644 index 0000000..0084f4a --- /dev/null +++ b/src/test/resources/colors.sorted.txt @@ -0,0 +1,6 @@ +#foreach($key in $keys) +$key +#foreach($color in $colors.get($key)) + $color.getFirst() $color.getSecond() +#end +#end diff --git a/src/test/resources/colors.txt b/src/test/resources/colors.txt new file mode 100644 index 0000000..f62762b --- /dev/null +++ b/src/test/resources/colors.txt @@ -0,0 +1,173 @@ +Blues + Navy #000080 + DarkBlue #00008B + MidnightBlue #191970 + MediumBlue #0000CD + Blue #0000FF + Teal #008080 + DarkSlateBlue #483D8B + DarkCyan #008B8B + SteelBlue #4682B4 + RoyalBlue #4169E1 + SlateBlue #6A5ACD + CadetBlue #5F9EA0 + DarkTurquoise #00CED1 + DodgerBlue #1E90FF + DeepSkyBlue #00BFFF + MediumSlateBlue #7B68EE + MediumTurquoise #48D1CC + CornflowerBlue #6495ED + Turquoise #40E0D0 + Aqua #00FFFF + Cyan #00FFFF + SkyBlue #87CEEB + LightSkyBlue #87CEFA + Aquamarine #7FFFD4 + LightSteelBlue #B0C4DE + LightBlue #ADD8E6 + PowderBlue #B0E0E6 + PaleTurquoise #AFEEEE + LightCyan #E0FFFF + AliceBlue #F0F8FF + Azure #F0FFFF +Browns + Maroon #800000 + SaddleBrown #8B4513 + Brown #A52A2A + Sienna #A0522D + DarkGoldenrod #B8860B + Chocolate #D2691E + Peru #CD853F + Goldenrod #DAA520 + RosyBrown #BC8F8F + SandyBrown #F4A460 + Tan #D2B48C + BurlyWood #DEB887 + Wheat #F5DEB3 + NavajoWhite #FFDEAD + Bisque #FFE4C4 + BlanchedAlmond #FFEBCD + Cornsilk #FFF8DC +Grays + Black #000000 + DarkSlateGray #2F4F4F + DimGray #696969 + Gray #808080 + SlateGray #708090 + LightSlateGray #778899 + DarkGray #A9A9A9 + Silver #C0C0C0 + LightGray #D3D3D3 + Gainsboro #DCDCDC +Greens + DarkGreen #006400 + Green #008000 + ForestGreen #228B22 + DarkOliveGreen #556B2F + Lime #00FF00 + Olive #808000 + Teal #008080 + SeaGreen #2E8B57 + DarkCyan #008B8B + OliveDrab #6B8E23 + LimeGreen #32CD32 + MediumSeaGreen #3CB371 + LawnGreen #7CFC00 + LightSeaGreen #20B2AA + Chartreuse #7FFF00 + SpringGreen #00FF7F + MediumSpringGreen #00FA9A + YellowGreen #9ACD32 + DarkTurquoise #00CED1 + DarkSeaGreen #8FBC8F + GreenYellow #ADFF2F + MediumAquamarine #66CDAA + MediumTurquoise #48D1CC + Turquoise #40E0D0 + LightGreen #90EE90 + PaleGreen #98FB98 + Aquamarine #7FFFD4 + PaleTurquoise #AFEEEE +Oranges + OrangeRed #FF4500 + DarkOrange #FF8C00 + Orange #FFA500 + Tomato #FF6347 + Coral #FF7F50 + LightSalmon #FFA07A +Pinks + MediumVioletRed #C71585 + DeepPink #FF1493 + PaleVioletRed #DB7093 + Fuchsia #FF00FF + HotPink #FF69B4 + LightPink #FFB6C1 + Pink #FFC0CB +Purples + Indigo #4B0082 + Purple #800080 + DarkSlateBlue #483D8B + DarkMagenta #8B008B + MediumVioletRed #C71585 + DarkViolet #9400D3 + SlateBlue #6A5ACD + BlueViolet #8A2BE2 + DarkOrchid #9932CC + MediumSlateBlue #7B68EE + RosyBrown #BC8F8F + MediumPurple #9370DB + PaleVioletRed #DB7093 + MediumOrchid #BA55D3 + Fuchsia #FF00FF + Magenta #FF00FF + Orchid #DA70D6 + Plum #DDA0DD + Violet #EE82EE + Thistle #D8BFD8 + Lavender #E6E6FA +Reds + DarkRed #8B0000 + FireBrick #B22222 + Red #FF0000 + Crimson #DC143C + OrangeRed #FF4500 + MediumVioletRed #C71585 + IndianRed #CD5C5C + Tomato #FF6347 + PaleVioletRed #DB7093 + Salmon #FA8072 + LightCoral #F08080 + DarkSalmon #E9967A + LightSalmon #FFA07A +Whites + AntiqueWhite #FAEBD7 + MistyRose #FFE4E1 + Beige #F5F5DC + Linen #FAF0E6 + OldLace #FDF5E6 + Honeydew #F0FFF0 + WhiteSmoke #F5F5F5 + Seashell #FFF5EE + LavenderBlush #FFF0F5 + AliceBlue #F0F8FF + FloralWhite #FFFAF0 + MintCream #F5FFFA + Azure #F0FFFF + Ivory #FFFFF0 + GhostWhite #F8F8FF + Snow #FFFAFA + White #FFFFFF +Yellows + DarkGoldenrod #B8860B + Goldenrod #DAA520 + Gold #FFD700 + DarkKhaki #BDB76B + Yellow #FFFF00 + Khaki #F0E68C + PaleGoldenrod #EEE8AA + PeachPuff #FFDAB9 + Moccasin #FFE4B5 + PapayaWhip #FFEFD5 + LemonChiffon #FFFACD + LightGoldenrodYellow #FAFAD2 + LightYellow #FFFFE0 \ No newline at end of file