@@ -83,6 +83,61 @@ public void TryWriteBytes_DestinationLengthTooShort()
8383 Assert . IsFalse ( node . TryWriteBytes ( stackalloc byte [ 0 ] ) , "length 0" ) ;
8484 }
8585
86+ [ Test ]
87+ public void TestParse_ArgumentNull ( ) => Assert . Throws < ArgumentNullException > ( ( ) => Node . Parse ( null ) ) ;
88+
89+ [ TestCase ( "00:00:00:00:00:00" , true , "00:00:00:00:00:00" ) ]
90+ [ TestCase ( "01:23:45:67:89:AB" , true , "01:23:45:67:89:AB" ) ]
91+ [ TestCase ( "FF:FF:FF:FF:FF:FF" , true , "FF:FF:FF:FF:FF:FF" ) ]
92+ [ TestCase ( "ab:cd:ef:AB:CD:EF" , true , "ab:cd:ef:AB:CD:EF" ) ]
93+ [ TestCase ( "0:1:2:3:4:F" , true , "00:01:02:03:04:0F" ) ]
94+ [ TestCase ( "000:001:002:003:004:00F" , true , "00:01:02:03:04:0F" ) ]
95+ [ TestCase ( "00:00:00:00:00" , false , null ) ]
96+ [ TestCase ( "00" , false , null ) ]
97+ [ TestCase ( "" , false , null ) ]
98+ [ TestCase ( "100:00:00:00:00:00" , false , null ) ]
99+ [ TestCase ( "00:00:00:00:00:100" , false , null ) ]
100+ [ TestCase ( "00:00:00:00:00:0X" , false , null ) ]
101+ [ TestCase ( "00-00-00-00-00-00" , false , null ) ]
102+ public void TestParse ( string s , bool expectValid , string expectedString )
103+ {
104+ Node n = default ;
105+
106+ if ( expectValid )
107+ Assert . DoesNotThrow ( ( ) => n = Node . Parse ( s ) ) ;
108+ else
109+ Assert . Throws < FormatException > ( ( ) => n = Node . Parse ( s ) ) ;
110+
111+ if ( expectValid ) {
112+ Assert . AreEqual ( expectedString . ToUpperInvariant ( ) , n . ToString ( "X" ) ) ;
113+ Assert . AreEqual ( expectedString . ToLowerInvariant ( ) , n . ToString ( "x" ) ) ;
114+ }
115+ }
116+
117+ [ TestCase ( "00:00:00:00:00:00" , true , "00:00:00:00:00:00" ) ]
118+ [ TestCase ( "01:23:45:67:89:AB" , true , "01:23:45:67:89:AB" ) ]
119+ [ TestCase ( "FF:FF:FF:FF:FF:FF" , true , "FF:FF:FF:FF:FF:FF" ) ]
120+ [ TestCase ( "ab:cd:ef:AB:CD:EF" , true , "ab:cd:ef:AB:CD:EF" ) ]
121+ [ TestCase ( "0:1:2:3:4:F" , true , "00:01:02:03:04:0F" ) ]
122+ [ TestCase ( "000:001:002:003:004:00F" , true , "00:01:02:03:04:0F" ) ]
123+ [ TestCase ( "00:00:00:00:00" , false , null ) ]
124+ [ TestCase ( "00" , false , null ) ]
125+ [ TestCase ( "" , false , null ) ]
126+ [ TestCase ( null , false , null ) ]
127+ [ TestCase ( "100:00:00:00:00:00" , false , null ) ]
128+ [ TestCase ( "00:00:00:00:00:100" , false , null ) ]
129+ [ TestCase ( "00:00:00:00:00:0X" , false , null ) ]
130+ [ TestCase ( "00-00-00-00-00-00" , false , null ) ]
131+ public void TestTryParse ( string s , bool expectValid , string expectedString )
132+ {
133+ Assert . AreEqual ( expectValid , Node . TryParse ( s , out var node ) ) ;
134+
135+ if ( expectValid ) {
136+ Assert . AreEqual ( expectedString . ToUpperInvariant ( ) , node . ToString ( "X" ) ) ;
137+ Assert . AreEqual ( expectedString . ToLowerInvariant ( ) , node . ToString ( "x" ) ) ;
138+ }
139+ }
140+
86141 [ Test ]
87142 public void TestToString ( )
88143 {
0 commit comments