68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								import unittest
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from Options import Choice, DefaultOnToggle, Toggle
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class TestNumericOptions(unittest.TestCase):
							 | 
						||
| 
								 | 
							
								    def test_numeric_option(self) -> None:
							 | 
						||
| 
								 | 
							
								        """Tests the initialization and equivalency comparisons of the base Numeric Option class."""
							 | 
						||
| 
								 | 
							
								        class TestChoice(Choice):
							 | 
						||
| 
								 | 
							
								            option_zero = 0
							 | 
						||
| 
								 | 
							
								            option_one = 1
							 | 
						||
| 
								 | 
							
								            option_two = 2
							 | 
						||
| 
								 | 
							
								            alias_three = 1
							 | 
						||
| 
								 | 
							
								            non_option_attr = 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        class TestToggle(Toggle):
							 | 
						||
| 
								 | 
							
								            pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        class TestDefaultOnToggle(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								            pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("choice"):
							 | 
						||
| 
								 | 
							
								            choice_option_default = TestChoice.from_any(TestChoice.default)
							 | 
						||
| 
								 | 
							
								            choice_option_string = TestChoice.from_any("one")
							 | 
						||
| 
								 | 
							
								            choice_option_int = TestChoice.from_any(2)
							 | 
						||
| 
								 | 
							
								            choice_option_alias = TestChoice.from_any("three")
							 | 
						||
| 
								 | 
							
								            choice_option_attr = TestChoice.from_any(TestChoice.option_two)
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            self.assertEqual(choice_option_default, TestChoice.option_zero,
							 | 
						||
| 
								 | 
							
								                "assigning default didn't match default value")
							 | 
						||
| 
								 | 
							
								            self.assertEqual(choice_option_string, "one")
							 | 
						||
| 
								 | 
							
								            self.assertEqual(choice_option_int, 2)
							 | 
						||
| 
								 | 
							
								            self.assertEqual(choice_option_alias, TestChoice.alias_three)
							 | 
						||
| 
								 | 
							
								            self.assertEqual(choice_option_attr, TestChoice.non_option_attr)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assertRaises(KeyError, TestChoice.from_any, "four")
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            self.assertIn(choice_option_int, [1, 2, 3])
							 | 
						||
| 
								 | 
							
								            self.assertIn(choice_option_int, {2})
							 | 
						||
| 
								 | 
							
								            self.assertIn(choice_option_int, (2,))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assertIn(choice_option_string, ["one", "two", "three"])
							 | 
						||
| 
								 | 
							
								            # this fails since the hash is derived from the value
							 | 
						||
| 
								 | 
							
								            self.assertNotIn(choice_option_string, {"one"})
							 | 
						||
| 
								 | 
							
								            self.assertIn(choice_option_string, ("one",))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("toggle"):
							 | 
						||
| 
								 | 
							
								            toggle_default = TestToggle.from_any(TestToggle.default)
							 | 
						||
| 
								 | 
							
								            toggle_string = TestToggle.from_any("false")
							 | 
						||
| 
								 | 
							
								            toggle_int = TestToggle.from_any(0)
							 | 
						||
| 
								 | 
							
								            toggle_alias = TestToggle.from_any("off")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assertFalse(toggle_default)
							 | 
						||
| 
								 | 
							
								            self.assertFalse(toggle_string)
							 | 
						||
| 
								 | 
							
								            self.assertFalse(toggle_int)
							 | 
						||
| 
								 | 
							
								            self.assertFalse(toggle_alias)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with self.subTest("on toggle"):
							 | 
						||
| 
								 | 
							
								            toggle_default = TestDefaultOnToggle.from_any(TestDefaultOnToggle.default)
							 | 
						||
| 
								 | 
							
								            toggle_string = TestDefaultOnToggle.from_any("true")
							 | 
						||
| 
								 | 
							
								            toggle_int = TestDefaultOnToggle.from_any(1)
							 | 
						||
| 
								 | 
							
								            toggle_alias = TestDefaultOnToggle.from_any("on")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            self.assertTrue(toggle_default)
							 | 
						||
| 
								 | 
							
								            self.assertTrue(toggle_string)
							 | 
						||
| 
								 | 
							
								            self.assertTrue(toggle_int)
							 | 
						||
| 
								 | 
							
								            self.assertTrue(toggle_alias)
							 |