(load "test.lisp") (load "plus-inc.lisp") ;;; basic functions (deftest test-explode () (check (equal (explode 1) '(|1|)) (equal (explode 22211) '(|2| |2| |2| |1| |1|)))) (deftest test-explode-string () (check (equal (explode-string "1") '(|1|)) (equal (explode-string "22211") '(|2| |2| |2| |1| |1|)))) (deftest test-implode () (check (eq (implode '(|1|)) '|1|) (eq (implode '(|2| |1| |3|)) '|213|))) (deftest test-symbol-to-number () (check (eql (symbol-to-number '|1|) 1) (eql (symbol-to-number '|231|) 231))) (deftest test-base-number () (check (base-number '(|1|) '|1|) (base-number '(|1| |1| |1|) '|1|) (base-number nil '|1|) (null (base-number '(|2|) '|1|)) (null (base-number '(|1| |2| |1|) '|1|)) (null (base-number '(|1| |2| |3|) '|1|)) (null (base-number '(|2| |3| |4|) '|1|)))) (deftest test-may-reverse-units-first () (setf *number-units-at-beginning* t) (check (equal (may-reverse '(|1|)) '(|1|)) (equal (may-reverse '(|1| |1| |1|)) '(|1| |1| |1|)) (equal (may-reverse '(|1| |2| |3|)) '(|1| |2| |3|)))) (deftest test-may-reverse-units-last () (setf *number-units-at-beginning* nil) (check (equal (may-reverse '(|1|)) '(|1|)) (equal (may-reverse '(|1| |1| |1|)) '(|1| |1| |1|)) (equal (may-reverse '(|1| |2| |3|)) '(|3| |2| |1|)))) (deftest test-basic () (combine-results (test-explode) (test-explode-string) (test-implode) (test-symbol-to-number) (test-base-number) (test-may-reverse-units-first) (test-may-reverse-units-last))) ;;; one ;;; earthal, infinite (deftest test-earth-next-digit () (let ((numerals '(|1| |2| |3| |4| |5|))) (check (eq (next-digit numerals '|1|) '|2|) (eq (next-digit numerals '|3|) '|4|) (eq (next-digit numerals '|5|) nil)))) (deftest test-earth-previous-digit () (let ((numerals '(|1| |2| |3| |4| |5|))) (check (eq (previous-digit numerals '|1|) nil) (eq (previous-digit numerals '|3|) '|2|) (eq (previous-digit numerals '|5|) '|4|)))) (deftest test-earth-infinite-next-list-number () (setf *number-units-at-beginning* t) (let ((numerals '(|1| |2| |3| |4| |5|))) (check (equal (next-list-number numerals nil) '(|1|)) (equal (next-list-number numerals '(|1|)) '(|2|)) (equal (next-list-number numerals '(|1| |3|)) '(|2| |3|)) (equal (next-list-number numerals '(|5|)) '(|1| |2|)) (equal (next-list-number numerals '(|1| |1|)) '(|2| |1|)) (equal (next-list-number numerals '(|1| |3| |1| |1|)) '(|2| |3| |1| |1|)) (equal (next-list-number numerals '(|5| |5|)) '(|1| |1| |2|)) (equal (next-list-number numerals '(|1| |5| |5|)) '(|2| |5| |5|)) (equal (next-list-number numerals '(|5| |5| |5|)) '(|1| |1| |1| |2|)) (equal (next-list-number numerals '(|5| |5| |1|)) '(|1| |1| |2| |1|)) (equal (next-list-number numerals '(|5| |5| |1| |1| |1|)) '(|1| |1| |2| |1| |1| |1|)) (equal (next-list-number numerals '(|4| |5| |1| |1| |1|)) '(|5| |5| |1| |1| |1|)) (equal (next-list-number numerals '(|4| |5| |1|)) '(|5| |5| |1|)) (equal (next-list-number numerals '(|5| |5| |2| |1|)) '(|1| |1| |3| |1|))))) (deftest test-earth-infinite-previous-list-number () (setf *number-units-at-beginning* t) (let ((numerals '(|1| |2| |3| |4| |5|))) (check (equal (previous-list-number numerals '(|1|)) nil) (equal (previous-list-number numerals '(|1| |1|)) nil) (equal (previous-list-number numerals '(|1| |1| |1|)) nil) (equal (previous-list-number numerals '(|2|)) '(|1|)) (equal (previous-list-number numerals '(|5|)) '(|4|)) (equal (previous-list-number numerals '(|2| |3|)) '(|1| |3|)) (equal (previous-list-number numerals '(|5| |5|)) '(|4| |5|)) (equal (previous-list-number numerals '(|1| |5|)) '(|5| |4|)) (equal (previous-list-number numerals '(|1| |2|)) '(|5|)) (equal (previous-list-number numerals '(|2| |3| |1|)) '(|1| |3| |1|)) (equal (previous-list-number numerals '(|2| |3| |1| |1|)) '(|1| |3| |1| |1|)) (equal (previous-list-number numerals '(|1| |1| |2| |3|)) '(|5| |5| |1| |3|)) (equal (previous-list-number numerals '(|5| |5| |1| |1| |1|)) '(|4| |5| |1| |1| |1|)) (equal (previous-list-number numerals '(|1| |5| |1|)) '(|5| |4| |1|)) (equal (previous-list-number numerals '(|1| |5| |1| |1|)) '(|5| |4| |1| |1|)) (equal (previous-list-number numerals '(|1| |2| |1|)) '(|5| |1|)) (equal (previous-list-number numerals '(|1| |2| |1| |1|)) '(|5| |1| |1|)) (equal (previous-list-number numerals '(|2| |2| |1| |1|)) '(|1| |2| |1| |1|))))) (deftest test-earth-plus-args-list () (setf *number-units-at-beginning* t) (let ((numerals '(|1| |2| |3| |4| |5|))) (check (equal (plus-args-list numerals '(|1|) '(|1|)) '(|1|)) (equal (plus-args-list numerals '(|2|) '(|1|)) '(|2|)) (equal (plus-args-list numerals '(|1|) '(|2|)) '(|2|)) (equal (plus-args-list numerals '(|2|) '(|2|)) '(|3|)) (equal (plus-args-list numerals '(|5|) '(|2|)) '(|1| |2|)) (equal (plus-args-list numerals '(|2|) '(|5|)) '(|1| |2|)) (equal (plus-args-list numerals '(|1| |3|) '(|1|)) '(|1| |3|)) (equal (plus-args-list numerals '(|2| |3|) '(|2|)) '(|3| |3|)) (equal (plus-args-list numerals '(|2| |3|) '(|5|)) '(|1| |4|)) (equal (plus-args-list numerals '(|2| |2|) '(|2| |2|)) '(|3| |3|)) (equal (plus-args-list numerals '(|3| |2|) '(|5| |3|)) '(|2| |5|)) (equal (plus-args-list numerals '(|3| |3|) '(|5| |3|)) '(|2| |1| |2|))))) (deftest test-earth-inf () (combine-results (test-earth-next-digit) (test-earth-previous-digit) (test-earth-infinite-next-list-number) (test-earth-infinite-previous-list-number) (test-earth-plus-args-list))) (deftest test-earth () (test-basic) (test-earth-inf))