diff options
Diffstat (limited to 'geoip/tests.lisp')
-rw-r--r-- | geoip/tests.lisp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/geoip/tests.lisp b/geoip/tests.lisp index c1d7d40..b7cd0be 100644 --- a/geoip/tests.lisp +++ b/geoip/tests.lisp @@ -18,3 +18,37 @@ (is (eq (get-in data 'q) 6)) (is (eq (get-in data 'l 'r) 's)) (is (eq (get-in data 'l :p) 'q)))) + +(test integer-to-bits-conversion + "Test integer to bits conversion" + (is (equal (geoip::integer-to-bits 0 8) '(0 0 0 0 0 0 0 0))) + (is (equal (geoip::integer-to-bits 255 8) '(1 1 1 1 1 1 1 1))) + (is (equal (geoip::integer-to-bits 170 8) '(1 0 1 0 1 0 1 0))) + (is (equal (geoip::integer-to-bits 1 4) '(0 0 0 1))) + (is (equal (geoip::integer-to-bits 15 4) '(1 1 1 1)))) + +(test specific + (let ((data #(#x44 #x54 #x65 #x73 #x74 ;; string: Test + #xA1 #x0F + #xC2 #xAF #x6C + #xE2 ;; map of 2 elements + #x20 0 ;; key: pointer to first string + #x20 5 ;; val: pointer to int + #x43 107 101 121 ;; key: key + #x20 7 ;; val: pointer to the uint16 + 1 7 ;; true + 4 1 #xFF #xFF #xFF #xF0 ;; int32: -16 + 2 4 #x42 65 79 #x48 195 160 195 188 195 159 195 177 ;; list + #x68 #x40 #x45 #x28 #x36 #x5C #xB3 #x5F #x3D + ))) + (with-foreign-array (a data `(:array :uint8 ,(length data))) + (let ((r (geoip::make-db-reader :db-ptr a :head-ptr a))) + (is (string= "Test" (geoip::mread-data r))) + (is (= #x0F (geoip::mread-data r))) + (is (= #xAF6C (geoip::mread-data r))) + (is (equalp '((:test . #x0F) (:key . #xAF6C)) + (geoip::mread-data r))) + (is (eq t (geoip::mread-data r))) + (is (= -16 (geoip::mread-data r))) + (is (equalp '("AO" "àüßñ") (geoip::mread-data r))) + (is (= 42.314159d0 (geoip::mread-data r))) )))) |