class TestSortedSetRemove(unittest.TestCase):
    def setUp(self):
        self.ss = SortedSet([7, 3, 12, 8])

    def test_remove_an_existing_elem(self):
        oldlen = len(self.ss)
        self.ss.remove(7)
        self.assertEqual(len(self.ss), oldlen - 1)

    def test_remove_an_elem_that_is_not_in_the_set(self):
        self.assertRaises(KeyError, self.ss.remove, 53153)
class TestSortedSetAdd(unittest.TestCase):
    def setUp(self):
        self.ss = SortedSet()

    def test_add(self):
        self.ss.add(3)
        self.assertEqual(len(self.ss), 1)

    def test_add_with_an_elem_already_in_the_set(self):
        self.ss.add(3)
        self.ss.add(3)
        self.assertEqual(len(self.ss), 1)

    @unittest.skipIf(PY2, "comparing different types is ok in PY2")
    def test_raise_unorderable_types(self):
        self.ss.add(3)
        self.assertRaises(TypeError, self.ss.add, 'sepeth')
 def test_for_different_elements(self):
     s1 = SortedSet([3, 5, 7])
     s2 = SortedSet([3, 6, 7, 8])
     self.assertFalse(s1.issubset(s2))
 def test_empty_set_issubset_of_everyset(self):
     e = SortedSet()
     s = SortedSet([7, 3, 5])
     self.assertTrue(e.issubset(s))
 def test_smaller_set_scattered_throughout_longer_set(self):
     odds = SortedSet(range(1, 11, 2))
     numbers = SortedSet(range(0, 11))
     self.assertTrue(odds.issubset(numbers))
 def test_same_sets_should_be_subset_eachother(self):
     s1 = SortedSet([7, 3, 5])
     s2 = SortedSet([5, 7, 3])
     self.assertTrue(s1.issubset(s2))
     self.assertTrue(s2.issubset(s1))
 def test_set_is_subset_of_itself(self):
     s = SortedSet([5, 3, 7])
     self.assertTrue(s.issubset(s))
 def test_longer_set_cannot_be_subset(self):
     longer = SortedSet([7, 3, 5])
     smaller = SortedSet([3, 5])
     self.assertFalse(longer.issubset(smaller))
 def setUp(self):
     self.ss = SortedSet([7, 3, 12, 8])
 def setUp(self):
     self.ss = SortedSet()
 def test_issubset_with_a_list(self):
     s = SortedSet([3, 5, 7])
     l = [3, 5, 7, 9]
     self.assertTrue(s.issubset(l))