(use serial) (context "Arithmetic" (context "Handling invalid input" (it "doesn't allow non-serials" (expect (sn+ "foo" 1) (to (raise errors)))) (it "doesn't allow negative fixnums" (expect (sn+ 1 -1) (to (raise errors)))) (it "doesn't allow too big numbers" (expect (sn+ 1 100 bits: 2) (to (raise errors)))) (it "doesn't allow non-numbers" (expect (sn+ 1 "foo") (to (raise errors))))) (it "adds a positive fixnum" (expect (sn+ 2 2) (be 4))) (it "can add to 0" (expect (sn+ 0 1) (be 1))) (it "wraps correctly" (expect (sn+ (sn+ 6 3 bits: 3) 2 bits: 3) (to (be 2))))) (context "Comparison" (it "can check for =" (expect (sn= 100 100) (to (be true)))) (it "can check >" (expect (sn> 100 99) (to (be true))) (expect (sn> 99 100) (to (be false))) (expect (sn> 99 99) (to (be false)))) (it "can check >=" (expect (sn>= 100 99) (to (be true))) (expect (sn>= 99 100) (to (be false))) (expect (sn>= 99 99) (to (be true)))) (it "can check <" (expect (sn< 99 100) (to (be true))) (expect (sn< 100 99) (to (be false))) (expect (sn< 99 99) (to (be false)))) (it "can check <=" (expect (sn<= 99 100) (to (be true))) (expect (sn<= 100 99) (to (be false))) (expect (sn<= 99 99) (to (be true)))))