import unittest from pythagorean_triplet import ( triplets_with_sum, ) # Tests adapted from `problem-specifications//canonical-data.json` # Python 2/3 compatibility if not hasattr(unittest.TestCase, "assertCountEqual"): unittest.TestCase.assertCountEqual = unittest.TestCase.assertItemsEqual class PythagoreanTripletTest(unittest.TestCase): def test_triplets_whose_sum_is_12(self): self.assertCountEqual(triplets_with_sum(12), [[3, 4, 5]]) def test_triplets_whose_sum_is_108(self): self.assertCountEqual(triplets_with_sum(108), [[27, 36, 45]]) def test_triplets_whose_sum_is_1000(self): self.assertCountEqual(triplets_with_sum(1000), [[200, 375, 425]]) def test_no_matching_triplets_for_1001(self): self.assertCountEqual(triplets_with_sum(1001), []) def test_returns_all_matching_triplets(self): self.assertCountEqual(triplets_with_sum(90), [[9, 40, 41], [15, 36, 39]]) def test_several_matching_triplets(self): self.assertCountEqual( triplets_with_sum(840), [ [40, 399, 401], [56, 390, 394], [105, 360, 375], [120, 350, 370], [140, 336, 364], [168, 315, 357], [210, 280, 350], [240, 252, 348], ], ) def test_triplets_for_large_number(self): self.assertCountEqual( triplets_with_sum(30000), [ [1200, 14375, 14425], [1875, 14000, 14125], [5000, 12000, 13000], [6000, 11250, 12750], [7500, 10000, 12500], ], ) if __name__ == "__main__": unittest.main()