aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/data/number/rev.lux
blob: 427ce4edf543f6ae5e5d11eb89d4946fde18f420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
(.module:
  [lux #*
   data/text/format
   ["_" test (#+ Test)]
   [control
    [monad (#+ do)]
    {[0 #test]
     [/
      ["$." equivalence]
      ["$." order]
      ["$." number]
      ["$." enum]
      ["$." interval]
      ["$." monoid]
      ["$." codec]]}]
   [math
    ["r" random]]]
  {1
   ["." /
    //]})

(def: #export test
  Test
  (<| (_.context (%name (name-of .Rev)))
      ($_ _.and
          ($equivalence.spec /.equivalence r.rev)
          ($order.spec /.order r.rev)
          ($number.spec /.order /.number r.rev)
          ($enum.spec /.enum r.rev)
          ($interval.spec /.interval r.rev)
          (<| (_.context "Addition.")
              ($monoid.spec /.equivalence /.addition r.rev))
          (<| (_.context "Multiplication.")
              ($monoid.spec /.equivalence /.multiplication r.rev))
          (<| (_.context "Minimum.")
              ($monoid.spec /.equivalence /.minimum r.rev))
          (<| (_.context "Maximum.")
              ($monoid.spec /.equivalence /.multiplication r.rev))
          (<| (_.context "Binary.")
              ($codec.spec /.equivalence /.binary r.rev))
          (<| (_.context "Octal.")
              ($codec.spec /.equivalence /.octal r.rev))
          (<| (_.context "Decimal.")
              ($codec.spec /.equivalence /.decimal r.rev))
          (<| (_.context "Hexadecimal.")
              ($codec.spec /.equivalence /.hex r.rev))

          (_.test "Alternate notations."
                  (and (r/= (bin ".11001001")
                            (bin ".11,00,10,01"))
                       (r/= (oct ".615243")
                            (oct ".615,243"))
                       (r/= (hex ".deadBEEF")
                            (hex ".dead,BEEF"))))
          )))