Exemple #1
0
    def test_when_new_word_goes_beyond_end_of_paper_it_should_be_appended_to_the_end(self):
        pencil = Pencil()

        pencil.write(self.paper, "A short phrase")
        pencil.erase(self.paper, "phrase")
        pencil.edit(self.paper, "sentence")

        self.assertEqual("A short sentence", self.paper.read())
    def test_erasing_should_erase_opposite_direction_of_the_written_order(
            self):
        eraser = Eraser(durability=3)
        pencil = Pencil(eraser=eraser)

        pencil.write(self.paper, "I am related to Buffalo Bill")
        pencil.erase(self.paper, "Bill")

        self.assertEqual("I am related to Buffalo B   ", self.paper.read())
    def test_when_pencil_eraser_degrades_fully_it_should_stop_erasing(self):
        eraser = Eraser(durability=4)
        pencil = Pencil(eraser=eraser)

        pencil.write(self.paper, "I am related to Buffalo Bill")
        pencil.erase(self.paper, "Bill")
        pencil.erase(self.paper, "Buffalo")

        self.assertEqual("I am related to Buffalo     ", self.paper.read())
 def test_whitespaceDoesntDepleteErasers(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=5)
     p.write("last on last night's schedule was immigration law")
     p.erase(" was ")
     self.assertTrue(
         p.getText() == "last on last night's schedule     immigration law")
     p.erase("la")
     self.assertTrue(
         p.getText() == "last on last night's schedule     immigration   w")
 def test_erasersWearOut(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=2)
     p.write("last on last night's schedule was immigration law")
     p.erase("la")
     self.assertTrue(
         p.getText() == "last on last night's schedule was immigration   w")
     p.erase("la")
     self.assertTrue(
         p.getText() == "last on last night's schedule was immigration   w")
 def test_erasingTextReplacesItsLastOccurrenceWithSpaces(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=200)
     p.write("last on last night's schedule was immigration law")
     p.erase("la")
     self.assertTrue(
         p.getText() == "last on last night's schedule was immigration   w")
     p.erase("la")
     self.assertTrue(
         p.getText() == "last on   st night's schedule was immigration   w")
    def test_when_the_word_to_be_erased_is_not_found_nothing_should_be_erased(
            self):
        eraser = Eraser()
        pencil = Pencil(eraser=eraser)

        text = "Nothing to erase here"
        pencil.write(self.paper, text)
        pencil.erase(self.paper, "Something")

        self.assertEqual(text, self.paper.read())
 def test_editingMarksCollisionsWithNonSpaceWithAt(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=200)
     p.write("An apple a day keeps the doctor away")
     p.erase("apple")
     p.overwrite("artichoke")
     self.assertTrue(p.getText() == "An artich@k@ay keeps the doctor away")
 def test_editingOverwritesErasedText(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=200)
     p.write("An apple a day keeps the doctor away")
     p.erase("apple")
     p.overwrite("onion")
     self.assertTrue(p.getText() == "An onion a day keeps the doctor away")
 def test_textIsErasedFromTheRight(self):
     p = Pencil(length=40, pointDurability=1000, eraserDurability=5)
     p.write("a Kafkaesque bureaucracy")
     p.erase("Kafkaesque")
     self.assertTrue(p.getText() == "a Kafka      bureaucracy")
Exemple #11
0
class PencilTester(unittest.TestCase):
    def setUp(self):
        """Runs once per test to define a fresh object."""
        self.my_pencil = Pencil(100, 5, 50)

    def tearDown(self):
        """Runs once per test to delete object"""
        del (self.my_pencil)

    def test_if_pencil_writes_a_word_it_is_outputted(self):
        self.assertEqual(self.my_pencil.write("hello"), "hello")

    def test_if_pencil_writes_another_word_it_is_appended_to_the_sheet(self):
        self.my_pencil.write("hello")
        self.assertEqual(self.my_pencil.write(" world!"), "hello world!")

    def test_if_pencil_writes_too_many_characters_its_durability_goes_to_zero(
            self):
        self.my_pencil.set_tip_durability(4)
        self.my_pencil.write("hello")
        self.assertEqual(self.my_pencil.get_tip_durability(), 0)

    def test_if_pencil_durability_is_zero_it_no_longer_writes_characters(self):
        self.my_pencil.set_tip_durability(4)
        self.assertEqual(self.my_pencil.write("hello"), "hell")

    def test_if_durability_is_not_affected_by_whitespace(self):
        self.my_pencil.set_tip_durability(4)
        self.assertEqual(self.my_pencil.write("ab cd"), "ab cd")

    def test_if_durability_is_affected_by_case_of_characters(self):
        self.my_pencil.set_tip_durability(4)
        self.assertEqual(self.my_pencil.write("Hello"), "Hel")

    def test_if_pencil_is_sharpened_its_durability_is_reset(self):
        self.my_pencil.set_tip_durability(4)
        self.my_pencil.write("Hello")
        self.assertEqual(self.my_pencil.get_tip_durability(), 0)
        self.my_pencil.sharpen()
        self.assertEqual(self.my_pencil.get_tip_durability(), 4)

    def test_if_pencil_is_sharpened_its_length_is_reduced(self):
        self.my_pencil.set_length(2)
        self.my_pencil.sharpen()
        self.assertEqual(self.my_pencil.get_length(), 1)

    def test_if_pencil_length_is_zero_it_cannot_be_sharpened_anymore(self):
        self.my_pencil.set_length(0)
        self.my_pencil.set_tip_durability(0)
        self.assertEqual(self.my_pencil.sharpen(), False)
        self.assertEqual(self.my_pencil.get_tip_durability(), 0)

    def test_if_word_is_erased_its_replaced_with_spaces(self):
        self.my_pencil.write("hello world!")
        self.assertEqual(self.my_pencil.erase("world"), "hello      !")

    def test_if_more_than_one_of_same_word_the_last_occurrence_of_word_is_erased(
            self):
        self.my_pencil.write("up up down down left right left right")
        self.assertEqual(self.my_pencil.erase("left"),
                         "up up down down left right      right")

    def test_if_erasing_reduces_eraser_durability(self):
        self.my_pencil.write("hello world!")
        self.my_pencil.set_eraser_durability(5)
        self.my_pencil.erase("world")
        self.assertEqual(self.my_pencil.get_eraser_durability(), 0)

    def test_that_whitespace_does_not_degrade_eraser(self):
        self.my_pencil.write("hello world!")
        self.my_pencil.set_eraser_durability(6)
        self.my_pencil.erase(" world")
        self.assertEqual(self.my_pencil.get_eraser_durability(), 1)

    def test_if_eraser_durability_reaches_zero_then_it_stops_erasing_from_the_right(
            self):
        self.my_pencil.write("shinedown")
        self.my_pencil.set_eraser_durability(5)
        self.assertEqual(self.my_pencil.erase("shinedown"), "shin     ")

    def test_if_a_word_is_erased_you_can_edit_to_write_over_the_whitespace(
            self):
        self.my_pencil.write("your mother was a hamster")
        self.my_pencil.erase("mother")
        self.assertEqual(self.my_pencil.rewrite(0, "mom"),
                         "your mom    was a hamster")

    def test_rewriting_a_word_that_is_too_long_overwrites_characters_with_at_symbols(
            self):
        self.my_pencil.write("my name is Smith.")
        self.my_pencil.erase("name")
        self.assertEqual(self.my_pencil.rewrite(0, "surname"),
                         "my surna@@ Smith.")

    def test_erasing_multiple_word_multiples(self):
        self.my_pencil.write(
            "How much wood could a woodchuck chuck if a woodchuck...")
        self.assertEqual(
            self.my_pencil.erase("chuck"),
            "How much wood could a woodchuck chuck if a wood     ...")
        self.assertEqual(
            self.my_pencil.erase("chuck"),
            "How much wood could a woodchuck       if a wood     ...")

    def test_rewriting_where_you_can_choose_which_erased_spot_to_rewrite(self):
        self.my_pencil.write(
            "Charizard used blast burn. It's super effective!")
        self.assertEqual(self.my_pencil.erase("super effective!"),
                         "Charizard used blast burn. It's                 ")
        self.assertEqual(self.my_pencil.erase("blast burn"),
                         "Charizard used           . It's                 ")
        self.assertEqual(self.my_pencil.erase("Charizard"),
                         "          used           . It's                 ")
        self.assertEqual(self.my_pencil.rewrite(1, "fly"),
                         "          used fly       . It's                 ")
        self.assertEqual(
            self.my_pencil.rewrite(1, "not very effective."),
            "          used fly       . It's not very effective.")
        self.assertEqual(
            self.my_pencil.rewrite(0, "Blaziken"),
            "Blaziken  used fly       . It's not very effective.")

    def test_bug_where_eraser_does_not_always_work_properly_when_its_durability_runs_out(
            self):
        self.my_pencil.set_eraser_durability(11)
        self.my_pencil.write("hello world! my name is Michael.")
        self.assertEqual(self.my_pencil.erase("world"),
                         "hello      ! my name is Michael.")
        self.assertEqual(self.my_pencil.erase("Michael"),
                         "hello      ! my name is M      .")

    def test_if_rewriting_affects_pencil_durability_because_I_did_not_think_of_it_earlier(
            self):
        self.my_pencil.write("Hello world! My name is Michael. yay.")
        self.my_pencil.erase("Michael")
        self.my_pencil.set_tip_durability(7)
        self.assertEqual(self.my_pencil.rewrite(0, "Michael"),
                         "Hello world! My name is Michae . yay.")

    def test_bug_where_when_eraser_durability_runs_out_and_the_whole_word_is_not_erased_rewriting_overwrites_the_characters_still_there(
            self):
        self.my_pencil.write("hello world!")
        self.my_pencil.set_eraser_durability(4)
        self.assertEqual(self.my_pencil.erase("world"), "hello w    !")
        self.assertEqual(self.my_pencil.rewrite(0, "orld"), "hello world!")