| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | package assert | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2016-06-27 22:22:01 +02:00
										 |  |  | 	"reflect" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-20 20:55:45 +02:00
										 |  |  | 	"v2ray.com/core/common/serial" | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-27 21:39:09 +01:00
										 |  |  | func (v *Assert) Pointer(value interface{}) *PointerSubject { | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 	return &PointerSubject{ | 
					
						
							|  |  |  | 		Subject: Subject{ | 
					
						
							| 
									
										
										
										
											2016-11-27 21:39:09 +01:00
										 |  |  | 			a:    v, | 
					
						
							| 
									
										
										
										
											2016-12-06 13:42:21 +01:00
										 |  |  | 			disp: serial.ToString(value), | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 		value: value, | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type PointerSubject struct { | 
					
						
							|  |  |  | 	Subject | 
					
						
							|  |  |  | 	value interface{} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (subject *PointerSubject) Equals(expectation interface{}) { | 
					
						
							|  |  |  | 	if subject.value != expectation { | 
					
						
							| 
									
										
										
										
											2016-12-07 00:31:08 +01:00
										 |  |  | 		subject.Fail("is equal to", serial.ToString(expectation)) | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (subject *PointerSubject) IsNil() { | 
					
						
							| 
									
										
										
										
											2016-06-27 22:22:01 +02:00
										 |  |  | 	if subject.value == nil { | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	valueType := reflect.TypeOf(subject.value) | 
					
						
							|  |  |  | 	nilType := reflect.Zero(valueType) | 
					
						
							|  |  |  | 	realValue := reflect.ValueOf(subject.value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if nilType != realValue { | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | 		subject.Fail("is", "nil") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (subject *PointerSubject) IsNotNil() { | 
					
						
							|  |  |  | 	if subject.value == nil { | 
					
						
							|  |  |  | 		subject.Fail("is not", "nil") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-06-27 22:22:01 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	valueType := reflect.TypeOf(subject.value) | 
					
						
							|  |  |  | 	nilType := reflect.Zero(valueType) | 
					
						
							|  |  |  | 	realValue := reflect.ValueOf(subject.value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if nilType == realValue { | 
					
						
							|  |  |  | 		subject.Fail("is not", "nil") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-05-24 21:55:46 +02:00
										 |  |  | } |