mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*******************************************************************************
 | 
						|
 * Copyright (c) 2012 itemis AG (http://www.itemis.eu) and others.
 | 
						|
 * All rights reserved. This program and the accompanying materials
 | 
						|
 * are made available under the terms of the Eclipse Public License v1.0
 | 
						|
 * which accompanies this distribution, and is available at
 | 
						|
 * http://www.eclipse.org/legal/epl-v10.html
 | 
						|
 *******************************************************************************/
 | 
						|
package example2
 | 
						|
 | 
						|
import org.junit.Test
 | 
						|
import static org.junit.Assert.*
 | 
						|
 | 
						|
 | 
						|
class BasicExpressions {
 | 
						|
	
 | 
						|
	@Test def void literals() {
 | 
						|
		// string literals work with single or double quotes
 | 
						|
		assertEquals('Hello', "Hello")
 | 
						|
		
 | 
						|
		// number literals (big decimals in this case)
 | 
						|
		assertEquals(42, 20 + 20 + 1 * 2)
 | 
						|
		assertEquals(42.00bd, 0.00bd + 42bd)
 | 
						|
		
 | 
						|
		// boolean literals
 | 
						|
		assertEquals(true, !false)
 | 
						|
		
 | 
						|
		// class literals
 | 
						|
		assertEquals(getClass(), typeof(BasicExpressions))
 | 
						|
	}
 | 
						|
	
 | 
						|
	@Test def void collections() {
 | 
						|
		// There are various static methods to create collections
 | 
						|
		// and numerous extension methods which make working with them
 | 
						|
		// convenient.
 | 
						|
		val list = newArrayList('Hello', 'World')
 | 
						|
		assertEquals('HELLO', list.map[toUpperCase].head)
 | 
						|
		
 | 
						|
		val set  = newHashSet(1, 3, 5)
 | 
						|
		assertEquals(2, set.filter[ it >= 3].size)
 | 
						|
		
 | 
						|
		val map  = newHashMap('one' -> 1, 'two' -> 2, 'three' -> 3)
 | 
						|
		assertEquals( 2 , map.get('two'))
 | 
						|
	}
 | 
						|
	
 | 
						|
	@Test def void controlStructures() {
 | 
						|
		// 'if' looks like in Java
 | 
						|
		if ('text'.length == 4) {
 | 
						|
			// but it's an expression so it can be used in more flexible ways:
 | 
						|
			assertEquals( 42 , if ('foo' != 'bar') 42 else -24 )
 | 
						|
		} else {
 | 
						|
			fail('Never happens!')
 | 
						|
		}
 | 
						|
		
 | 
						|
		// in a switch the first match wins
 | 
						|
		switch (t : 'text') {
 | 
						|
			// use predicates
 | 
						|
			case t.length > 8 :
 | 
						|
				fail('Never happens!')
 | 
						|
			// use equals
 | 
						|
			case 'text' :
 | 
						|
				assertTrue(true)
 | 
						|
			default :
 | 
						|
				fail('never happens!')
 | 
						|
		}
 | 
						|
		
 | 
						|
		// switch also supports type guards, which provide a safe 
 | 
						|
		// and convenient alternative to Java's 'instanceof'-cascades.
 | 
						|
		val Object someValue = 'a string typed to Object'
 | 
						|
		assertEquals('string', 
 | 
						|
			switch someValue {
 | 
						|
				Number : 'number'
 | 
						|
				String : 'string' 
 | 
						|
			})
 | 
						|
	}
 | 
						|
	
 | 
						|
	@Test def void loops() {
 | 
						|
		// for loop
 | 
						|
		var counter = 1
 | 
						|
		for (i : 1 .. 10) {
 | 
						|
			assertEquals(counter, i)
 | 
						|
			counter = counter + 1
 | 
						|
		}
 | 
						|
		
 | 
						|
		// while loop
 | 
						|
		val iterator = newArrayList(1,2,3,4,5).iterator
 | 
						|
		counter = 1
 | 
						|
		while(iterator.hasNext) {
 | 
						|
			val i = iterator.next
 | 
						|
			assertEquals(counter, i)
 | 
						|
			counter = counter + 1
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |