31 lines
		
	
	
		
			832 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			832 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2005, 2006 Daniel Ehrenberg | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | IN: xml.tests | ||
|  | USING: xml io kernel math sequences strings xml.utilities tools.test math.parser ;
 | ||
|  | 
 | ||
|  | PROCESS: calculate ( tag -- n )
 | ||
|  | 
 | ||
|  | : calc-2children ( tag -- n n )
 | ||
|  |     children-tags first2 >r calculate r> calculate ;
 | ||
|  | 
 | ||
|  | TAG: number calculate | ||
|  |     children>string string>number ;
 | ||
|  | TAG: add calculate | ||
|  |     calc-2children + ;
 | ||
|  | TAG: minus calculate | ||
|  |     calc-2children - ;
 | ||
|  | TAG: times calculate | ||
|  |     calc-2children * ;
 | ||
|  | TAG: divide calculate | ||
|  |     calc-2children / ;
 | ||
|  | TAG: neg calculate | ||
|  |     children-tags first calculate neg ;
 | ||
|  | 
 | ||
|  | : calc-arith ( string -- n )
 | ||
|  |     string>xml first-child-tag calculate ;
 | ||
|  | 
 | ||
|  | [ 32 ] [ | ||
|  |     "<math><times><add><number>1</number><number>3</number></add><neg><number>-8</number></neg></times></math>" | ||
|  |     calc-arith | ||
|  | ] unit-test |