| 
									
										
										
										
											2014-10-31 14:45:03 +01:00
										 |  |  | package trie | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	checker "gopkg.in/check.v1" | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | type TrieEncodingSuite struct{} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var _ = checker.Suite(&TrieEncodingSuite{}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s *TrieEncodingSuite) TestCompactEncode(c *checker.C) { | 
					
						
							|  |  |  | 	// even compact encode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	test1 := []byte{1, 2, 3, 4, 5} | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	res1 := CompactEncode(test1) | 
					
						
							|  |  |  | 	c.Assert(res1, checker.Equals, "\x11\x23\x45") | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	// odd compact encode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	test2 := []byte{0, 1, 2, 3, 4, 5} | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	res2 := CompactEncode(test2) | 
					
						
							|  |  |  | 	c.Assert(res2, checker.Equals, "\x00\x01\x23\x45") | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	//odd terminated compact encode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	test3 := []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	res3 := CompactEncode(test3) | 
					
						
							|  |  |  | 	c.Assert(res3, checker.Equals, "\x20\x0f\x1c\xb8") | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	// even terminated compact encode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	test4 := []byte{15, 1, 12, 11, 8 /*term*/, 16} | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	res4 := CompactEncode(test4) | 
					
						
							|  |  |  | 	c.Assert(res4, checker.Equals, "\x3f\x1c\xb8") | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | func (s *TrieEncodingSuite) TestCompactHexDecode(c *checker.C) { | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	exp := []byte{7, 6, 6, 5, 7, 2, 6, 2, 16} | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | 	res := CompactHexDecode("verb") | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	c.Assert(res, checker.DeepEquals, exp) | 
					
						
							| 
									
										
										
										
											2014-02-14 23:56:09 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | func (s *TrieEncodingSuite) TestCompactDecode(c *checker.C) { | 
					
						
							|  |  |  | 	// odd compact decode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	exp := []byte{1, 2, 3, 4, 5} | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 	res := CompactDecode("\x11\x23\x45") | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	c.Assert(res, checker.DeepEquals, exp) | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	// even compact decode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	exp = []byte{0, 1, 2, 3, 4, 5} | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 	res = CompactDecode("\x00\x01\x23\x45") | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	c.Assert(res, checker.DeepEquals, exp) | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	// even terminated compact decode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	exp = []byte{0, 15, 1, 12, 11, 8 /*term*/, 16} | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 	res = CompactDecode("\x20\x0f\x1c\xb8") | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	c.Assert(res, checker.DeepEquals, exp) | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	// even terminated compact decode | 
					
						
							| 
									
										
										
										
											2014-10-10 17:00:06 +02:00
										 |  |  | 	exp = []byte{15, 1, 12, 11, 8 /*term*/, 16} | 
					
						
							| 
									
										
										
										
											2014-02-17 15:46:16 -08:00
										 |  |  | 	res = CompactDecode("\x3f\x1c\xb8") | 
					
						
							| 
									
										
										
										
											2014-11-14 15:01:52 -06:00
										 |  |  | 	c.Assert(res, checker.DeepEquals, exp) | 
					
						
							| 
									
										
										
										
											2014-06-26 18:45:57 +01:00
										 |  |  | } |