AnalogueTester.scala
package net.snowtiger.test
import net.snowtiger.analogue.AnalogueLiteral._
import net.snowtiger.analogue.AnalogueRectangle
/**
* Unit tests for AnalogueLine, AnalogueRectangle and AnalogueCuboid.
* See http://snowtiger.net/scala/analogue for a complete article on the subject.
*
* @author Mark B Davies
*/
object AnalogueTester
{
def main(args: Array[String])
{
testLines()
testSquares()
testCubes()
}
def testLines()
{
assert ( O == 0 )
assert ( OI == 1 )
assert ( O~I == 2)
assert ( O~~I == 3)
assert ( O~~~~~~~~I == 9)
assert ( O~~~~~~~~~OI == 11)
assert ( O~~~~~~~~~O~I == 12)
assert ( O~~~~~~~~~O~~I == 13)
assert ( O~~~~~~~~~O~~~~~~~~~O~~~~~I == 26)
assert ( (O~~~I).size == 4 )
assert ( O~~~I == 4 )
assert ( O~~~I + 3 == 7 )
assert ( 5 + O~~~I == 9 )
assert ( 5 * O~~~I == 20 )
assert ( O~~~I + O~~I == 7 )
assert ( O~~~I - O~~I == 1 )
}
def testSquares()
{
assert ( (O~~~~I
| I
| I
|~~~~I).width == 5 )
assert ( (O~~~~I
| I
| I
|~~~~I).height == 3 )
assert ( (O~~~~I
| I
| I
|~~~~I).area == (O~~~~I * O~~I).size )
assert ( (O~~I
| I
| I
| I
| I
|~~I).area == (O~~~~I
| I
| I
|~~~~I).area )
assert ( (O~~~~I
| I
| I
|~~~~I).top == O~~~~I )
assert ( (O~~~~I
| I
| I
|~~~~I).side == 3 )
assert ( (O~~~~I
| I
| I
|~~~~I) == new AnalogueRectangle(5, 3) )
val threeBy3 = (O~~I
| I
| I
|~~I)
assert ( (OI
|I) * 3 == threeBy3 )
assert ( (OI
|I) + (O~I
| I
|~I) == threeBy3 )
}
def testCubes()
{
assert ( ( OI
|OI
!I ).volume == 1 )
assert ( ( O~~I
|O~~I
!~~I ).volume == ( OI
|OI
|!I
|!I
!I ).volume )
assert ( ( O~~~I
|O~~~I
|! I
|! I
!~~~I ).volume == ( O~~~I
|+ L
\+ L
\O~~~I
!~~~I ).volume )
val cuboid4x6x3 = ( O~~~I
|+ L
| + L
| O~~~I
| ! I
| ! I
| ! I
\ ! I
\! I
!~~~I )
assert (cuboid4x6x3.top == ( O~~~I
| I
| I
|~~~I ) )
assert ( cuboid4x6x3.side == ( O~~I
| I
| I
| I
| I
| I
|~~I ) )
assert ( cuboid4x6x3.front == ( O~~~I
| I
| I
| I
| I
| I
|~~~I ) )
assert ((( O~~~I
|+ L
| + L
| O~~~I
| ! I
| ! I
| ! I
\ ! I
\! I
!~~~I ) * 10 ).volume == 72000 )
}
}