38 lines
		
	
	
		
			742 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			742 B
		
	
	
	
		
			Factor
		
	
	
|  | USING: kernel tools.test generic generic.standard ;
 | ||
|  | IN: classes.intersection.tests | ||
|  | 
 | ||
|  | TUPLE: a ;
 | ||
|  | TUPLE: a1 < a ; TUPLE: a2 < a ; TUPLE: a3 < a2 ;
 | ||
|  | MIXIN: b | ||
|  | INSTANCE: a3 b | ||
|  | INSTANCE: a1 b | ||
|  | INTERSECTION: c a2 b ;
 | ||
|  | 
 | ||
|  | GENERIC: x ( a -- b )
 | ||
|  | 
 | ||
|  | M: c x drop c ;
 | ||
|  | M: a x drop a ;
 | ||
|  | 
 | ||
|  | [ a ] [ T{ a } x ] unit-test | ||
|  | [ a ] [ T{ a1 } x ] unit-test | ||
|  | [ a ] [ T{ a2 } x ] unit-test | ||
|  | 
 | ||
|  | [ t ] [ T{ a3 } c? ] unit-test | ||
|  | [ t ] [ T{ a3 } \ x effective-method M\ c x eq? nip ] unit-test | ||
|  | [ c ] [ T{ a3 } x ] unit-test | ||
|  | 
 | ||
|  | ! More complex case | ||
|  | TUPLE: t1 ;
 | ||
|  | TUPLE: t2 < t1 ; TUPLE: t3 < t1 ;
 | ||
|  | TUPLE: t4 < t2 ; TUPLE: t5 < t2 ;
 | ||
|  | 
 | ||
|  | UNION: m t4 t5 t3 ;
 | ||
|  | INTERSECTION: i t2 m ;
 | ||
|  | 
 | ||
|  | GENERIC: g ( a -- b )
 | ||
|  | 
 | ||
|  | M: i g drop i ;
 | ||
|  | M: t4 g drop t4 ;
 | ||
|  | 
 | ||
|  | [ t4 ] [ T{ t4 } g ] unit-test | ||
|  | [ i ] [ T{ t5 } g ] unit-test |