aboutsummaryrefslogtreecommitdiffstats
path: root/tests/inkplate.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/inkplate.scm')
-rw-r--r--tests/inkplate.scm286
1 files changed, 286 insertions, 0 deletions
diff --git a/tests/inkplate.scm b/tests/inkplate.scm
new file mode 100644
index 0000000..fb18199
--- /dev/null
+++ b/tests/inkplate.scm
@@ -0,0 +1,286 @@
+(use-modules (srfi srfi-64)
+ (inkplate lowlevel))
+
+(define* (call-with-test-device func #:key (input-string ""))
+ (let ((device (make-inkplate (open-input-string input-string) (open-output-string))))
+ (func device)
+ (close device)))
+
+(test-begin "Inkplate")
+(test-equal "Convert hello" "48656c6c6f" (convert-string-to-hex "Hello"))
+(test-equal "Convert zero-pads result" "0a" (convert-string-to-hex "\n"))
+(test-equal "Convert a path" "2f696d616765312e626d70" (convert-string-to-hex "/image1.bmp"))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw pixel command zero-padds coordinates and color"
+ "#0(005,005,01)*"
+ (begin
+ (draw-pixel test-device 5 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw line command zero-padds coordinates and color"
+ "#1(005,010,005,010,01)*"
+ (begin
+ (draw-line test-device 5 10 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw fast vertical line command zero-padds coordinates and color"
+ "#2(005,010,005,01)*"
+ (begin
+ (draw-fast-vertical-line test-device 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw fast horizontal line command zero-padds coordinates and color"
+ "#3(005,010,005,01)*"
+ (begin
+ (draw-fast-horizontal-line test-device 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw rectangle command zero-padds coordinates and color"
+ "#4(005,010,005,010,01)*"
+ (begin
+ (draw-rectangle test-device 5 10 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw circle command zero-padds coordinates and color"
+ "#5(005,010,005,01)*"
+ (begin
+ (draw-circle test-device 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw triangle command zero-padds coordinates and color"
+ "#6(005,010,005,010,005,010,01)*"
+ (begin
+ (draw-triangle test-device 5 10 5 10 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw rounded rectangle command zero-padds coordinates and color"
+ "#7(005,010,005,010,005,01)*"
+ (begin
+ (draw-rounded-rectangle test-device 5 10 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Fill rectangle command zero-padds coordinates and color"
+ "#8(005,010,005,010,01)*"
+ (begin
+ (fill-rectangle test-device 5 10 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Fill circle command zero-padds coordinates and color"
+ "#9(005,010,005,01)*"
+ (begin
+ (fill-circle test-device 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Fill triangle command zero-padds coordinates and color"
+ "#A(005,010,005,010,005,010,01)*"
+ (begin
+ (fill-triangle test-device 5 10 5 10 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Fill rounded rectangle command zero-padds coordinates and color"
+ "#B(005,010,005,010,005,01)*"
+ (begin
+ (fill-rounded-rectangle test-device 5 10 5 10 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Print command quotes its argument"
+ "#C(\"48656c6c6f\")*"
+ (begin
+ (print test-device "48656c6c6f")
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set text size command zero-padds size"
+ "#D(05)*"
+ (begin
+ (set-text-size test-device 5)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set cursor command zero-padds coordinates"
+ "#E(005,010)*"
+ (begin
+ (set-cursor test-device 5 10)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set test wrap #t becomes T"
+ "#F(T)*"
+ (begin
+ (set-text-wrap test-device #t)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set test wrap #f becomes F"
+ "#F(F)*"
+ (begin
+ (set-text-wrap test-device #f)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set rotation command zero-padds the rotation"
+ "#G(000)*"
+ (begin
+ (set-rotation test-device 0)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw bitmap command zero-padds the coordinates and quotes the path"
+ "#H(005,010,\"48656c6c6f\")*"
+ (begin
+ (draw-bitmap test-device 5 10 "48656c6c6f")
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Set display mode command inserts a number"
+ "#I(1)*"
+ (begin
+ (set-display-mode test-device 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Get display mode command gets created"
+ "#J(?)*"
+ (begin
+ (get-display-mode test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Clear screen command gets created"
+ "#K(1)*"
+ (begin
+ (clear-screen test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Update display command gets created"
+ "#L(1)*"
+ (begin
+ (update test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Partial update command zero-padds coordinates"
+ "#M(005,010,100)*"
+ (begin
+ (partial-update test-device 5 10 100)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Read temperature command gets created"
+ "#N(?)*"
+ (begin
+ (read-temperature test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Read touchpad command gets created"
+ "#O(1)*"
+ (begin
+ (read-touchpad test-device 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Read battery command gets created"
+ "#P(?)*"
+ (begin
+ (read-battery test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Panel supply command #t becomes 1"
+ "#Q(1)*"
+ (begin
+ (panel-supply test-device #t)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Panel supply command #f becomes 0"
+ "#Q(0)*"
+ (begin
+ (panel-supply test-device #f)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Get panel state command gets created"
+ "#R(?)*"
+ (begin
+ (get-panel-state test-device)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw image zero-padds coordinates and quotes path"
+ "#S(005,010,\"2f696d616765312e626d70\")*"
+ (begin
+ (draw-image test-device 5 10 "2f696d616765312e626d70")
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw thick line zero-padds arguments"
+ "#T(005,010,100,005,10,01)*"
+ (begin
+ (draw-thick-line test-device 5 10 100 5 10 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Draw ellipse zero-padds arguments"
+ "#U(005,010,100,005,01)*"
+ (begin
+ (draw-ellipse test-device 5 10 100 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(call-with-test-device
+ (lambda (test-device)
+ (test-equal "Fill ellipse zero-padds arguments"
+ "#V(005,010,100,005,01)*"
+ (begin
+ (fill-ellipse test-device 5 10 100 5 1)
+ (get-output-string (inkplate-output-port test-device))))))
+
+(test-end "Inkplate")