startshape Tests
rule Tests {
// borders should be 8 pixels beyond these pins Pin { x 0 y 0 r 135 s 0.5 } Pin { x 20 y 0 r -135 s 0.5 } Pin { x 0 y 20 r 45 s 0.5 } Pin { x 20 y 20 r -45 s 0.5 } // top row, left to right TouchingTestsSized { x 2 y 5.5 } TouchingTestsRotated { x 7.5 y 5.5 } SizeTests { x 11 y 17 s 0.5 r -90 } SquareEdge { x 13 y 6 } CircleLine { x 15 y 6 } BrightnessLines { x 17 y 6 } // bottom row TouchingTestsJittered { x 1.5 y 2 b 0.5 }
}
rule TouchingTestsSized {
TouchingTests { x 0 } TouchingTests { y 5 s 0.7 } TouchingTests { y 8.5 s 0.4 }
} rule TouchingTestsRotated {
TouchingTests { x 0 y 9 s 0.4 r 45 } TouchingTests { x 0 y 6.5 s 0.4 r 30 } TouchingTests { x 0 y 4.2 s 0.4 r 15 } TouchingTests { x 0 y 2 s 0.4 r 5 } TouchingTests { x 0 y -0.25 s 0.4 r 2 }
} rule TouchingTestsJittered {
// at 2000pixels, 1 unit = 100pixels // important: there should be no scaling between the startshape and here! // optimally, only the rightmost pair should touch TouchPair { x 00 y 0.0200 } // 2 pixel gap TouchPair { x 01 y 0.0150 } // 1.5 pixel gap TouchPair { x 02 y 0.0100 } // 1 pixel gap TouchPair { x 03 y 0.0090 } TouchPair { x 04 y 0.0080 } TouchPair { x 05 y 0.0070 } TouchPair { x 06 y 0.0060 } TouchPair { x 07 y 0.0050 } TouchPair { x 08 y 0.0040 } TouchPair { x 09 y 0.0030 } TouchPair { x 10 y 0.0020 } TouchPair { x 11 y 0.0010 } TouchPair { x 12 y 0.0000 } // exact TouchFixed { x 00 } TouchFixed { x 01 } TouchFixed { x 02 } TouchFixed { x 03 } TouchFixed { x 04 } TouchFixed { x 05 } TouchFixed { x 06 } TouchFixed { x 07 } TouchFixed { x 08 } TouchFixed { x 09 } TouchFixed { x 10 } TouchFixed { x 11 } TouchFixed { x 12 }
} rule TouchPair {
SQUARE { x 0 y 0.0 s 0.5 b 0.0 } SQUARE { x 0 y 0.5 s 0.5 b 0.0 }
} rule TouchFixed {
SQUARE { x 0 y 1 s 0.5 b 0.0 }
}
rule TouchingTests {
SquareAbutTest { x 0 y 2.5 } OverlapTest { x 3 y 2.5 } CircleAbutTest { x 0 y 0 } CircleInSquaresTest { x 3 y 0 }
} rule SquareAbutTest { // there should be no white showing between these
SQUARE { x -0.5 } SQUARE { x 0.5 } SQUARE { y 1 }
}
rule CircleInSquaresTest { // the circle should just touch the squares
CIRCLE { } SQUARE { x -1 } SQUARE { x 1 } SQUARE { y 1 }
}
rule CircleAbutTest { // the circles should just touch
CIRCLE { x -0.5 } CIRCLE { x 0.5 } CIRCLE { y 1 x -0.5 } CIRCLE { y 1 x 0.5 }
}
rule OverlapTest { // center should be a clean cross-hair
SQUARE { x -0.5 } SQUARE { x 0.5 b 0.5 } SQUARE { x -0.5 y 1 b 0.75 } SQUARE { x 0.5 y 1 b 0.25 }
}
rule SizeTests { // the progression of shapes should appear smooth
SizeSquareTests { y -0.75 } SizeCircleTests { y 0.75 }
} rule SizeCircleTests {
CIRCLE { } SizeCircleTests { x 2.25 s 0.90 }
} rule SizeSquareTests {
SQUARE { } SizeSquareTests { x 2.25 s 0.90 }
}
rule SquareEdge { // there should be no white space between the squares as they get smaller, and the right edge should be a straight line
SQUARE { } SquareEdge { y 0.95 x 0.05 s 0.90 }
}
rule CircleLine { // the circles should just touch as they get smaller
CIRCLE { } CircleLine { y 0.95 s 0.90 }
}
rule BrightnessLines {
BrightnessLinePerCent { x 0 } BrightnessLineHex { x 0.84375 y -0.15625 s 0.6875 } Pin { x -0.5 y 10.5 r -135 s 0.25 } Pin { x 1.1875 y 10.5 r 135 s 0.25 }
} rule BrightnessLinePerCent { // eleven even gradations from white to black
SQUARE { b 0.0 y 0 } SQUARE { b 0.1 y 1 } SQUARE { b 0.2 y 2 } SQUARE { b 0.3 y 3 } SQUARE { b 0.4 y 4 } SQUARE { b 0.5 y 5 } SQUARE { b 0.6 y 6 } SQUARE { b 0.7 y 7 } SQUARE { b 0.8 y 8 } SQUARE { b 0.9 y 9 } SQUARE { b 1.0 y 10 }
} rule BrightnessLineHex { // sixteen even gradations from white to black
SQUARE { b 0.0 y 0 } SQUARE { b 0.0666666667 y 1 } SQUARE { b 0.1333333333 y 2 } SQUARE { b 0.2000000000 y 3 } SQUARE { b 0.2666666667 y 4 } SQUARE { b 0.3333333333 y 5 } SQUARE { b 0.4000000000 y 6 } SQUARE { b 0.4666666667 y 7 } SQUARE { b 0.5333333333 y 8 } SQUARE { b 0.6000000000 y 9 } SQUARE { b 0.6666666667 y 10 } SQUARE { b 0.7333333333 y 11 } SQUARE { b 0.8000000000 y 12 } SQUARE { b 0.8666666667 y 13 } SQUARE { b 0.9333333333 y 14 } SQUARE { b 1.0000000000 y 15 }
}
rule Pin {
PinLine { y -1 s 0.2 }
}
rule PinLine {
CIRCLE { } PinLine { y 0.25 s 0.95 }
}