Ejemplo n.º 1
0
 def test_that_pencil_that_starts_dull_only_writes_empty_spaces(self):
     point_durability = 0
     pencil = Pencil(point_durability=point_durability)
     paper = Paper()
     pencil.write(paper, 'test')
     self.assertEqual('    ',
                      paper.display_page())  # paper should contain 4 spaces
Ejemplo n.º 2
0
 def test_that_pencil_writes_where_it_left_off(self):
     paper = Paper()
     point_durability = 50
     pencil = Pencil(point_durability=point_durability)
     pencil.write(paper, 'She sells sea shells')
     pencil.write(paper, ' down by the sea shore')
     self.assertEqual('She sells sea shells down by the sea shore',
                      paper.display_page())
Ejemplo n.º 3
0
 def test_that_pencil_that_becomes_dull_during_writing_writes_empty_spaces(
         self):
     point_durability = 4
     pencil = Pencil(point_durability=point_durability)
     paper = Paper()
     pencil.write(paper, 'Test')
     self.assertEqual(
         'Tes ',
         paper.display_page())  # paper should contain one space at end
Ejemplo n.º 4
0
 def test_that_eraser_erases_word_in_opposite_order(self):
     durability = 3
     eraser = Eraser(durability=durability)
     point_durability = 100
     initial_length = 5
     pencil = Pencil(point_durability=point_durability, initial_length=initial_length, eraser=eraser)
     paper = Paper()
     pencil.write(paper, 'Buffalo Bill')
     pencil.erase(paper, 'Bill')
     self.assertEqual('Buffalo B   ', paper.display_page())
Ejemplo n.º 5
0
 def test_that_pencil_that_is_sharpened_before_going_dull_continues_to_write(
         self):
     point_durability = 20
     initial_length = 5
     pencil = Pencil(point_durability=point_durability,
                     initial_length=initial_length)
     paper = Paper()
     pencil.write(paper, 'Testing sharpening.')
     pencil.sharpen()
     pencil.write(paper, ' Testing sharpening.')
     self.assertEqual('Testing sharpening. Testing sharpening.',
                      paper.display_page())
Ejemplo n.º 6
0
 def test_that_pencil_that_becomes_dull_picks_up_after_spaces_when_sharpened(
         self):
     point_durability = 5
     initial_length = 5
     pencil = Pencil(point_durability=point_durability,
                     initial_length=initial_length)
     paper = Paper()
     pencil.write(paper, 'Test sharpening')
     self.assertEqual(0, pencil.point_durability)
     pencil.sharpen()
     pencil.write(paper, 'Test sharpening')
     self.assertEqual('Test           Test           ',
                      paper.display_page())
Ejemplo n.º 7
0
 def test_that_eraser_does_not_erase_when_it_is_given_an_empty_string(self):
     input_text = 'How much wood...'
     paper = Paper(input_text)
     self.pencil.erase(paper, '')
     self.assertEqual('How much wood...', paper.display_page())
Ejemplo n.º 8
0
class TestEraser(unittest.TestCase):
    def setUp(self):
        durability = 10
        self.eraser = Eraser(durability=durability)
        point_durability = 100
        initial_length = 5
        self.pencil = Pencil(point_durability=point_durability, initial_length=initial_length, eraser=self.eraser)
        self.paper = Paper()

    def test_that_eraser_erases_last_occurance_of_text_on_paper(self):
        self.pencil.write(self.paper, 'test the eraser test the eraser')
        self.pencil.erase(self.paper, 'eraser')
        self.assertEqual('test the eraser test the       ', self.paper.display_page())

    def test_that_eraser_can_be_initialized_with_a_durability(self):
        durability = 10
        eraser = Eraser(durability=durability)
        self.assertEqual(10, eraser.durability)

    def test_that_eraser_degrades_correct_amount_for_non_whitespace_characters(self):
        self.pencil.write(self.paper, 'test that eraser degrades correct amount')
        self.pencil.erase(self.paper, 'eraser')
        self.assertEqual(4, self.eraser.durability)

    def test_that_eraser_degrades_correct_amount_for_whitespace_characters(self):
        self.pencil.write(self.paper, 'test that eraser degrades correct amount')
        self.pencil.erase(self.paper, 'test that')
        self.assertEqual(2, self.eraser.durability)

    def test_that_eraser_erases_multiple_words_at_one_time_correctly(self):
        self.pencil.write(self.paper, 'test that eraser degrades correct amount')
        self.pencil.erase(self.paper, 'test that')
        expected_text = '          eraser degrades correct amount'
        self.assertEqual(expected_text, self.paper.display_page())

    def test_that_eraser_erases_multiple_words_one_after_another_correctly(self):
        input_text = 'How much wood would a woodchuck chuck if a woodchuck could chuck wood?'
        self.pencil.write(self.paper, input_text)
        self.pencil.erase(self.paper, 'chuck')
        self.pencil.erase(self.paper, 'chuck')
        expected_text = 'How much wood would a woodchuck chuck if a wood      could       wood?'
        self.assertEqual(expected_text, self.paper.display_page())

    def test_that_eraser_erases_word_in_opposite_order(self):
        durability = 3
        eraser = Eraser(durability=durability)
        point_durability = 100
        initial_length = 5
        pencil = Pencil(point_durability=point_durability, initial_length=initial_length, eraser=eraser)
        paper = Paper()
        pencil.write(paper, 'Buffalo Bill')
        pencil.erase(paper, 'Bill')
        self.assertEqual('Buffalo B   ', paper.display_page())

    def test_that_eraser_raises_value_error_if_text_to_erase_is_not_present(self):
        input_text = 'How much wood would a woodchuck chuck if a woodchuck could chuck wood?'
        paper = Paper(input_text)
        with self.assertRaises(ValueError):
            self.pencil.erase(paper, 'how')

    def test_that_eraser_does_not_erase_when_it_is_given_an_empty_string(self):
        input_text = 'How much wood...'
        paper = Paper(input_text)
        self.pencil.erase(paper, '')
        self.assertEqual('How much wood...', paper.display_page())
Ejemplo n.º 9
0
class TestPencil(unittest.TestCase):
    def setUp(self):
        self.paper = Paper()
        point_durability = 50
        eraser_durability = 20
        eraser = Eraser(eraser_durability)
        self.pencil = Pencil(point_durability=point_durability, eraser=eraser)

    def test_that_pencil_writes_on_paper(self):
        paper = Paper()
        point_durability = 50
        pencil = Pencil(point_durability=point_durability)
        pencil.write(paper, 'She sells sea shells')
        self.assertEqual('She sells sea shells', paper.display_page())

    def test_that_pencil_writes_where_it_left_off(self):
        paper = Paper()
        point_durability = 50
        pencil = Pencil(point_durability=point_durability)
        pencil.write(paper, 'She sells sea shells')
        pencil.write(paper, ' down by the sea shore')
        self.assertEqual('She sells sea shells down by the sea shore',
                         paper.display_page())

    def test_that_point_durability_can_be_set_on_construction(self):
        point_durability = 10
        pencil = Pencil(point_durability=point_durability)
        self.assertEqual(point_durability, pencil.point_durability)

    def test_that_pencil_not_dull_when_lower_case_text_len_is_less_than_point_durability(
            self):
        point_durability = 10
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, 'test')
        self.assertEqual(6, pencil.point_durability)

    def test_that_pencil_not_dull_when_upper_case_text_should_not_use_up_point_durability(
            self):
        point_durability = 10
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, 'TEST')
        self.assertEqual(2, pencil.point_durability)

    def test_that_pencil_point_durability_does_not_change_for_spaces(self):
        point_durability = 10
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, 'test    ')  # 4 spaces written to paper
        self.assertEqual(6, pencil.point_durability)

    def test_that_pencil_point_durability_does_not_change_for_newline_characters(
            self):
        point_durability = 10
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper,
                     '\ntest\ntest\n\n\n')  # 4 newlines written to paper
        self.assertEqual(2, pencil.point_durability)

    def test_that_pencil_point_durability_decrements_by_one_for_special_characters(
            self):
        point_durability = 30
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, '~!@#$%^&*()_+`-=:",./<>?{}[]|'
                     )  # 29 special chars written to paper
        self.assertEqual(1, pencil.point_durability)

    def test_that_pencil_that_starts_dull_only_writes_empty_spaces(self):
        point_durability = 0
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, 'test')
        self.assertEqual('    ',
                         paper.display_page())  # paper should contain 4 spaces

    def test_that_pencil_that_becomes_dull_during_writing_writes_empty_spaces(
            self):
        point_durability = 4
        pencil = Pencil(point_durability=point_durability)
        paper = Paper()
        pencil.write(paper, 'Test')
        self.assertEqual(
            'Tes ',
            paper.display_page())  # paper should contain one space at end

    def test_that_pencil_that_becomes_dull_returns_to_start_point_durability_when_sharpened(
            self):
        point_durability = 15
        initial_length = 5
        pencil = Pencil(point_durability=point_durability,
                        initial_length=initial_length)
        paper = Paper()
        pencil.write(paper, 'Test sharpening')
        self.assertEqual(0, pencil.point_durability)
        pencil.sharpen()
        self.assertEqual(15, pencil.point_durability)

    def test_that_pencil_that_becomes_dull_picks_up_after_spaces_when_sharpened(
            self):
        point_durability = 5
        initial_length = 5
        pencil = Pencil(point_durability=point_durability,
                        initial_length=initial_length)
        paper = Paper()
        pencil.write(paper, 'Test sharpening')
        self.assertEqual(0, pencil.point_durability)
        pencil.sharpen()
        pencil.write(paper, 'Test sharpening')
        self.assertEqual('Test           Test           ',
                         paper.display_page())

    def test_that_creation_of_pencil_with_initial_length_creates_pencil_with_correct_length(
            self):
        initial_length = 5
        pencil = Pencil(initial_length=initial_length)
        self.assertEqual(5, pencil.length)

    def test_that_sharpening_pencil_reduces_length_by_one(self):
        initial_length = 5
        pencil = Pencil(initial_length=initial_length)
        pencil.sharpen()
        self.assertEqual(4, pencil.length)

    def test_that_trying_to_sharpen_zero_length_pencil_raises_error(self):
        initial_length = 0
        pencil = Pencil(initial_length=initial_length)
        with self.assertRaises(ValueError):
            pencil.sharpen()

    def test_that_pencil_that_is_sharpened_before_going_dull_continues_to_write(
            self):
        point_durability = 20
        initial_length = 5
        pencil = Pencil(point_durability=point_durability,
                        initial_length=initial_length)
        paper = Paper()
        pencil.write(paper, 'Testing sharpening.')
        pencil.sharpen()
        pencil.write(paper, ' Testing sharpening.')
        self.assertEqual('Testing sharpening. Testing sharpening.',
                         paper.display_page())

    def test_that_pencil_can_edit_paper_at_specific_location_with_at_symbol_if_char_present(
            self):
        self.pencil.write(self.paper, 'Testing sharpening.')
        self.pencil.edit(self.paper,
                         replacement_text='R',
                         method='index',
                         location_index=0)
        self.assertEqual('@esting sharpening.', self.paper.display_page())

    def test_that_pencil_can_edit_paper_at_specific_location_with_char_if_space_present(
            self):
        self.pencil.write(self.paper, 'Testing sharpening.')
        self.pencil.edit(self.paper,
                         replacement_text='a',
                         method='index',
                         location_index=7)
        self.assertEqual('Testingasharpening.', self.paper.display_page())

    def test_that_pencil_can_edit_paper_at_specific_location_with_space_if_space_present(
            self):
        self.pencil.write(self.paper, 'Testing sharpening.')
        self.pencil.edit(self.paper,
                         replacement_text=' ',
                         method='index',
                         location_index=7)
        self.assertEqual('Testing sharpening.', self.paper.display_page())

    def test_that_pencil_edit_with_overflow_replaces_non_whitespace_chars_with_at_symbols(
            self):
        self.pencil.write(self.paper, 'An       a day keeps the doctor away')
        self.pencil.edit(self.paper,
                         replacement_text='artichoke',
                         method='index',
                         location_index=3)
        self.assertEqual('An artich@k@ay keeps the doctor away',
                         self.paper.display_page())

    def test_that_pencil_edit_with_no_overflow_replaces_empty_spaces_with_edit_text(
            self):
        self.pencil.write(self.paper, 'An       a day keeps the doctor away')
        self.pencil.edit(self.paper,
                         replacement_text='onion',
                         method='index',
                         location_index=3)
        self.assertEqual('An onion a day keeps the doctor away',
                         self.paper.display_page())

    def test_that_pencil_edit_of_less_empty_spaces_than_original_empty_space_results_in_original_empty_spaces(
            self):
        self.pencil.write(self.paper,
                          'An       a day keeps the doctor away')  # 7 spaces
        self.pencil.edit(self.paper,
                         replacement_text='   ',
                         method='index',
                         location_index=3)  # edit 3 empty spaces
        self.assertEqual('An       a day keeps the doctor away',
                         self.paper.display_page())

    def test_that_pencil_can_edit_paper_where_erasure_happened_with_at_symbol_if_char_present(
            self):
        self.pencil.write(self.paper, 'Testing erase functionality')
        self.pencil.erase(self.paper, 'Testing')
        self.pencil.edit(self.paper,
                         replacement_text='Pineapple',
                         method='erase',
                         erase_number=1)
        self.assertEqual('Pineappl@rase functionality',
                         self.paper.display_page())

    def test_that_pencil_can_edit_paper_where_third_erasure_was_done(self):
        self.pencil.write(self.paper, 'test the edit test the edit test.')
        self.pencil.erase(self.paper, 'test')
        self.pencil.erase(self.paper, 'test')
        self.pencil.erase(self.paper, 'test')
        self.pencil.edit(self.paper,
                         replacement_text='Pineapple',
                         method='erase',
                         erase_number=3)
        self.assertEqual('Pinea@@@eedit      the edit     .',
                         self.paper.display_page())

    def test_that_pencil_can_edit_past_text_into_more_empty_spaces_from_another_erasure(
            self):
        self.pencil.write(self.paper, 'test the edit test a edit rest.')
        self.pencil.erase(self.paper, 'edit')
        self.pencil.erase(self.paper, 'test')
        self.pencil.edit(self.paper,
                         replacement_text='Pineapple',
                         method='erase',
                         erase_number=2)
        self.assertEqual('test the edit Pinea@ple   rest.',
                         self.paper.display_page())

    def test_that_pencil_correctly_edits_past_end_of_document_with_replacement_text(
            self):
        self.pencil.write(self.paper, 'test edit past end of page')
        self.pencil.erase(self.paper, 'page')
        self.pencil.edit(self.paper,
                         replacement_text='Pineapple',
                         method='erase',
                         erase_number=1)
        self.assertEqual('test edit past end of Pineapple',
                         self.paper.display_page())

    def test_that_pencil_correctly_writes_new_line_symbols_past_end_of_document(
            self):
        self.pencil.write(self.paper, 'test newline edit past end of page')
        self.pencil.erase(self.paper, 'page')
        self.pencil.edit(self.paper,
                         replacement_text='Pine\n\n\n',
                         method='erase',
                         erase_number=1)
        self.assertEqual('test newline edit past end of Pine\n\n\n',
                         self.paper.display_page())
Ejemplo n.º 10
0
 def test_that_pencil_writes_on_paper(self):
     paper = Paper()
     point_durability = 50
     pencil = Pencil(point_durability=point_durability)
     pencil.write(paper, 'She sells sea shells')
     self.assertEqual('She sells sea shells', paper.display_page())
Ejemplo n.º 11
0
 def test_that_paper_can_be_initialized_with_text(self):
     paper = Paper('This is the original text of the paper')
     self.assertEqual('This is the original text of the paper',
                      paper.display_page())
Ejemplo n.º 12
0
 def test_that_initializing_blank_paper_is_blank_paper(self):
     paper = Paper()
     self.assertEqual('', paper.display_page())