File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -89,6 +89,19 @@ def machine_readable(self) -> Any:
8989 for k , v in (self ._value .items () if self ._value else [])
9090 }
9191
92+ def __lt__ (self , other : Any ) -> bool :
93+ # cliff only ever compares two values from the same column,
94+ # so `other` is expected to also be an AddressesColumn
95+ return self .human_readable () < other .human_readable ()
96+
97+ def __eq__ (self , other : object ) -> bool :
98+ if not isinstance (other , AddressesColumn ):
99+ return NotImplemented
100+ return self .human_readable () == other .human_readable ()
101+
102+ def __hash__ (self ) -> int :
103+ return hash (self .human_readable ())
104+
92105
93106class HostColumn (cliff_columns .FormattableColumn [str | None ]):
94107 """Generate a formatted string of a hostname."""
Original file line number Diff line number Diff line change @@ -84,6 +84,41 @@ def setup_sdk_servers_mock(self, count):
8484 return servers
8585
8686
87+ class TestAddressesColumn (test_utils .TestCommand ):
88+ def setUp (self ):
89+ super ().setUp ()
90+
91+ self .addr_a = server .AddressesColumn (
92+ {'demo-net' : [{'addr' : '10.0.0.144' , 'version' : 4 }]}
93+ )
94+ self .addr_b = server .AddressesColumn (
95+ {'network1' : [{'addr' : '192.168.1.254' , 'version' : 4 }]}
96+ )
97+
98+ def test_sorting (self ):
99+ """Verify AddressesColumn objects can be sorted."""
100+ addresses = [
101+ self .addr_b ,
102+ self .addr_a ,
103+ ]
104+
105+ self .assertEqual (
106+ [self .addr_a , self .addr_b ],
107+ sorted (addresses ),
108+ )
109+
110+ def test_comparison (self ):
111+ """Verify AddressesColumn comparison uses human-readable values."""
112+ addr_a_dup = server .AddressesColumn (
113+ {'demo-net' : [{'addr' : '10.0.0.144' , 'version' : 4 }]}
114+ )
115+
116+ self .assertLess (self .addr_a , self .addr_b )
117+ self .assertGreater (self .addr_b , self .addr_a )
118+ self .assertEqual (self .addr_a , addr_a_dup )
119+ self .assertNotEqual (self .addr_a , self .addr_b )
120+
121+
87122class TestServerAddFixedIP (TestServer ):
88123 def setUp (self ):
89124 super ().setUp ()
You can’t perform that action at this time.
0 commit comments