11. Unit Testing Objects

  • Feel free to use your laptop

  • You are strongly encourage to work with others

    • When you get stuck, ask those sitting around you for help

    • Get used to working together in the labs

    • Peer teaching and peer learning has been empirically shown to be very effective

11.1. Pre Lab Exercises

  • Have the previous lab complete

11.2. Before Kattis

  1. Create a Person class

    • Attribute for first_name

    • Attribute for last_name

    • Attribute for email_address

    • The constructor will take three parameters for specifying the values of the attributes

    • A method returning a string of their full_name() — e.g. Bob Smith

    • Write a reasonable __eq__ method — you can decide what it means for two Person objects to be equivalent

    • Write a reasonable __repr__ method — you can decide what the string looks like

    • Make instances of the class and write assert tests to verify correctness

  2. Create unittest classes for the Person class

    • Write tests for each of the methods in each class

    • Be sure to reference the unittest topic

    • You may find the Circle class’ unittests helpful

      • Be sure to remove the from src.circle import Circle line

    • Run the tests with unittest.main(argv=[''], verbosity=2, exit=False)

    • Ensure all tests pass

11.3. Kattis Problems

  • You should be using a scrap piece of paper to work out the ideas for the following problems

    • The problems you are to solve are getting too complex to try to solve by just coding

    • Trying to solve problems by just typing away will not yield success

  1. https://open.kattis.com/problems/everywhere

  2. https://open.kattis.com/problems/babelfish

  3. https://open.kattis.com/problems/oddmanout

  4. https://open.kattis.com/problems/securedoors

  5. https://open.kattis.com/problems/modulo