Move from github, collapse gltk and strictmath, add candle
[clnl] / src / test / clnl-gltk / tests.lisp
diff --git a/src/test/clnl-gltk/tests.lisp b/src/test/clnl-gltk/tests.lisp
new file mode 100644 (file)
index 0000000..72815fa
--- /dev/null
@@ -0,0 +1,316 @@
+(in-package #:clnl-gltk-test)
+
+(deftest "Simple Font"
+ "8A20F6ABDEB91C20EDA85C78AED49767AB3A70EB"
+ (gl:color 1f0 1f0 1f0)
+ (gl:translate 10 10 0)
+ (clnl-gltk:font-print "Hello World"))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 5 1 :text "Hello")))
+ (deftest "Text Box 1"
+  "2CECA2C51025389617AA9A710B3625106009DF2E"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 7 2 :text "Hello")))
+ (deftest "Text Box 2"
+  "9BF11B56936F547523203EA2A81CC2DB2CB3CC19"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 5 2 :text (format nil "Hello~%World"))))
+ (deftest "Text Box Multiline"
+  "D805DA6096FB970B1C5B4268B76F1917DCA4AE1C"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 5 2 :text (format nil "Helloare~%Worlding~%fdsa"))))
+ (deftest "Text Box Multiline Clip"
+  "D805DA6096FB970B1C5B4268B76F1917DCA4AE1C"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 50 5 2 :text (format nil "Helloare~%Worlding~%fdsa") :border nil)))
+ (deftest "Text Box Borderless"
+  "8D3B592B51A60A2BBC18564E6CBAF231B0AE19DD"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 6 5 :text (format nil "Hi my name is~%frank") :border nil :word-wrap t)))
+ (deftest "Text Box Wrap 1"
+  "AB467A1E7195B299F2218995A05DD2E13C27DEE9"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 3 5 :text (format nil "Hi my name is~%frank") :border nil :word-wrap t)))
+ (deftest "Text Box Wrap 2"
+  "021D8496E23E955D4315C08540CEBAACFF626E26"
+  (clnl-gltk:render tb)))
+
+(let
+ ((tb (clnl-gltk:textbox 5 5 2 5 :text (format nil "Hi m name is~%frank") :border nil :word-wrap t)))
+ (deftest "Text Box Wrap 3"
+  "5351DCF1D442B6313BD357B1DFB2C80ED3E0E6FB"
+  (clnl-gltk:render tb)))
+
+(let
+ ((ib (clnl-gltk:inputbox 5 5 5)))
+ (deftest "Input Box 1"
+  "17D991E70A129C1A57F503690D364BB0975A595B"
+  (setf *inputbox* ib)
+  (clnl-gltk:render ib)))
+
+(let
+ ((ib (clnl-gltk:inputbox 5 5 5)))
+ (clnl-gltk:key-pressed ib 65)
+ (clnl-gltk:key-pressed ib 66)
+ (clnl-gltk:key-pressed ib 67)
+ (clnl-gltk:key-pressed ib :key-left)
+ (clnl-gltk:key-pressed ib :key-left)
+ (clnl-gltk:key-pressed ib 8)
+ (clnl-gltk:key-pressed ib :key-right)
+ (deftest "Input Box 2"
+  "D03BD310CB1CF22AE7A0F143BE523F9FC6F20D73"
+  (setf *inputbox* ib)
+  (clnl-gltk:render ib)))
+
+(let
+ ((ib (clnl-gltk:inputbox 5 5 5)))
+ (clnl-gltk:key-pressed ib 65)
+ (clnl-gltk:key-pressed ib 66)
+ (clnl-gltk:key-pressed ib 67)
+ (clnl-gltk:key-pressed ib 68)
+ (clnl-gltk:key-pressed ib :key-left)
+ (clnl-gltk:key-pressed ib 21)
+ (deftest "Input Box 3"
+  "19EA65A5299EBF16021AE01F4BB9C39945829665"
+  (setf *inputbox* ib)
+  (clnl-gltk:render ib)))
+
+(let
+ ((ib (clnl-gltk:inputbox 5 5 5))
+  (tb (clnl-gltk:textbox 5 28 5 1)))
+ (clnl-gltk:key-pressed ib 65)
+ (clnl-gltk:key-pressed ib 66)
+ (clnl-gltk:key-pressed ib 67)
+ (clnl-gltk:key-pressed ib 68)
+ (clnl-gltk:key-pressed ib 8)
+ (setf (clnl-gltk:textbox-text tb) (clnl-gltk:value ib))
+ (clnl-gltk:clear ib)
+ (deftest "Input Box / Text Box"
+  "3456140503547591726C56C3E5A2956CBAB066F9"
+  (setf *inputbox* ib)
+  (clnl-gltk:render tb)
+  (clnl-gltk:render ib)))
+
+(let
+ ((ib (clnl-gltk:inputbox 5 5 1))
+  (tb (clnl-gltk:textbox 5 28 1 1)))
+ (clnl-gltk:resize ib (truncate (- 100 12) clnl-gltk:*font-width*) 1)
+ (clnl-gltk:resize tb (truncate (- 100 12) clnl-gltk:*font-width*) (truncate (- 100 40) clnl-gltk:*font-height*))
+ (deftest "Resize Input Box / Text Box"
+  "A005D7F79A462A12CC4C8FA2D4E08D9705EE653D"
+  (setf *inputbox* ib)
+  (clnl-gltk:render tb)
+  (clnl-gltk:render ib)))
+
+(defvar *button-base-sum* "57FE772A7F3F06632F7CAB6EDCED93D1D98EFE17")
+(defvar *button-hover-sum* "0471DF593568AC35F0F91FCB0CF8B7C95CE76FAA")
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "test" (lambda () (format t "This button was pressed~%")))))
+ (deftest "Button 1"
+  *button-base-sum*
+  (clnl-gltk:render but)))
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "te" (lambda () (format t "This button was pressed~%")))))
+ (deftest "Button 2"
+  "12595E272032268A6BD31DAE25405DFBBC18537E"
+  (clnl-gltk:render but)))
+
+(let
+ ((checksum "8C3017E28B5F4DA4832193DB1ECB9F1C2D8B9B81"))
+ (let
+  ((but (clnl-gltk:button 5 5 40 30 "te..." (lambda () (format t "This button was pressed~%")))))
+  (deftest "Button 3a"
+   checksum
+   (clnl-gltk:render but)))
+
+ (let
+  ((but (clnl-gltk:button 5 5 40 30 "testing" (lambda () (format t "This button was pressed~%")))))
+  (deftest "Button 3b"
+   checksum
+   (clnl-gltk:render but))))
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "test" nil)))
+ (clnl-gltk:mousemove but 10 10)
+ (deftest "Button Hover 1"
+  *button-hover-sum*
+  (clnl-gltk:render but)))
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "test" nil)))
+ (clnl-gltk:mousemove but 10 10)
+ (clnl-gltk:mousemove but 50 50)
+ (deftest "Button Hover 2"
+  *button-base-sum*
+  (clnl-gltk:render but)))
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "test" nil)))
+ (clnl-gltk:mousemove but 10 10)
+ (clnl-gltk:mousedown but 10 10)
+ (deftest "Button Down"
+  "CF9AB21372A9D72ECDE1351B6C834DE8E020DC67"
+  (clnl-gltk:render but)))
+
+(let
+ ((but (clnl-gltk:button 5 5 40 30 "test" nil)))
+ (clnl-gltk:mousemove but 10 10)
+ (clnl-gltk:mousedown but 10 10)
+ (clnl-gltk:mousemove but 50 50)
+ (deftest "Button Down Moved"
+  "C2A2F8B8B1C70BE32A35D050DC9AB03F310EB44D"
+  (clnl-gltk:render but)))
+
+(let*
+ ((clicked nil)
+  (but (clnl-gltk:button 5 5 40 30 "test" (lambda () (setf clicked t)))))
+ (clnl-gltk:mousemove but 10 10)
+ (clnl-gltk:mousedown but 10 10)
+ (clnl-gltk:mouseup but 10 10)
+ (deftest "Button Clicked"
+  *button-hover-sum*
+  (clnl-gltk:render but)
+  (when (not clicked) (fail-test))))
+
+(let*
+ ((clicked nil)
+  (but (clnl-gltk:button 5 5 40 30 "test" (lambda () (setf clicked t)))))
+ (clnl-gltk:mousemove but 10 10)
+ (clnl-gltk:mousedown but 10 10)
+ (clnl-gltk:mousemove but 50 50)
+ (clnl-gltk:mouseup but 50 50)
+ (deftest "Button Clicked Abort"
+  *button-base-sum*
+  (clnl-gltk:render but)
+  (when clicked (fail-test))))
+
+(let
+ ((but (clnl-gltk:button 20 20 50 40 "test" nil)))
+ (clnl-gltk:resize but 40 30)
+ (clnl-gltk:reposition but 5 5)
+ (deftest "Button Reize/Reposition"
+  *button-base-sum*
+  (clnl-gltk:render but)))
+
+(let*
+ ((but nil))
+ (setf but (clnl-gltk:button 20 20 60 40 "test" (lambda () (clnl-gltk:toggle but)) :forever t))
+ (deftest "Button Forever 1"
+  "C7F4CC201EF3DDB4474D537CA6F1D7462F5822D1"
+  (clnl-gltk:render but)))
+
+(let*
+ ((but nil))
+ (setf but (clnl-gltk:button 20 20 60 40 "test" (lambda () (clnl-gltk:toggle but)) :forever t))
+ (clnl-gltk:mousemove but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (deftest "Button Forever - Toggle mouse on"
+  "AAD25A1A35FFC0306C0257450530B19421BB1B97"
+  (clnl-gltk:render but)))
+
+(let*
+ ((but nil))
+ (setf but (clnl-gltk:button 20 20 60 40 "test" (lambda () (clnl-gltk:toggle but)) :forever t))
+ (clnl-gltk:mousemove but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (clnl-gltk:mousemove but 10 10)
+ (deftest "Button Forever - Toggle mouse off"
+  "CE0153ACE89F075279C24FB28A9538730B307048"
+  (clnl-gltk:render but)))
+
+(let*
+ ((but nil))
+ (setf but (clnl-gltk:button 20 20 60 40 "test" (lambda () (clnl-gltk:toggle but)) :forever t))
+ (clnl-gltk:mousemove but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (clnl-gltk:mousemove but 10 10)
+ (deftest "Button Forever - Toggle twice"
+  "C7F4CC201EF3DDB4474D537CA6F1D7462F5822D1"
+  (clnl-gltk:render but)))
+
+(let*
+ ((but nil))
+ (setf but (clnl-gltk:button 20 20 60 40 "test" (lambda () (clnl-gltk:toggle but t)) :forever t))
+ (clnl-gltk:mousemove but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (clnl-gltk:mousedown but 30 30)
+ (clnl-gltk:mouseup but 30 30)
+ (clnl-gltk:mousemove but 10 10)
+ (deftest "Button Forever - Toggle state T"
+  "CE0153ACE89F075279C24FB28A9538730B307048"
+  (clnl-gltk:render but)))
+
+(defvar *switch-on* "CA21940F7F585E98B70F54165FA9617E8720B084")
+(defvar *switch-off* "25F8B2D544795DC953FF3F880F4762FEEFCCEF04")
+(defvar *switch-hover* "9643E58C1E160530B3B4467DE121C83F445EE444")
+
+(let
+ ((switch (clnl-gltk:switch 5 5 80 "test" (lambda (state) (format t "The new state is: ~A~%" state)) t)))
+ (deftest "Switch 1"
+  *switch-on*
+  (setf *mouse-reactor* switch)
+  (clnl-gltk:render switch)))
+
+(let
+ ((switch (clnl-gltk:switch 5 5 80 "test" (lambda (state) (format t "The new state is: ~A~%" state)))))
+ (deftest "Switch 2"
+  *switch-off*
+  (clnl-gltk:render switch)))
+
+(let
+ ((switch (clnl-gltk:switch 5 5 80 "testing switch" (lambda (state) (format t "The new state is: ~A~%" state)))))
+ (deftest "Switch 3"
+  "C7362964BB4CB6C1C89AABFAD956C65A42823296"
+  (clnl-gltk:render switch)))
+
+(let
+ ((switch (clnl-gltk:switch 5 5 80 "test" (lambda (state) (format t "The new state is: ~A~%" state)))))
+ (clnl-gltk:mousemove switch 30 30)
+ (deftest "Switch Hover"
+  *switch-hover*
+  (clnl-gltk:render switch)))
+
+(let
+ ((switch (clnl-gltk:switch 5 5 80 "test" (lambda (state) (format t "The new state is: ~A~%" state)))))
+ (clnl-gltk:mousemove switch 30 30)
+ (clnl-gltk:mousemove switch 50 50)
+ (deftest "Switch Hover 2"
+  *switch-off*
+  (clnl-gltk:render switch)))
+
+(let*
+ ((on nil)
+  (switch (clnl-gltk:switch 5 5 80 "test" (lambda (state) (setf on state)))))
+ (clnl-gltk:mousedown switch 30 30)
+ (deftest "Switch Click"
+  *switch-on*
+  (clnl-gltk:render switch)
+  (when (not on) (fail-test))))
+
+(let
+ ((slider (clnl-gltk:slider 5 5 80 "test" (lambda (val) (format t "The new val is: ~A~%" val)) 0 100 5 100)))
+ (deftest "Slider 1"
+  "87CCD09486DBA9A0115034E454B28658121EE6DE"
+  (setf *mouse-reactor* slider)
+  (clnl-gltk:render slider)))