3 # kBuild - testcase for the math functions.
7 # Copyright (c) 2007-2009 knut st. osmundsen <bird-kBuild-spamix@anduin.net>
9 # This file is part of kBuild.
11 # kBuild is free software; you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 3 of the License, or
14 # (at your option) any later version.
16 # kBuild is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # GNU General Public License for more details.
21 # You should have received a copy of the GNU General Public License
22 # along with kBuild. If not, see <http://www.gnu.org/licenses/>
27 include $(PATH_KBUILD
)/header.kmk
30 $(error The
'not' function is missing
)
33 $(error The
'eq' function is missing
)
37 ASSERT_TRUE
= $(if
$(not
$(1)),$(error failure
: '$(1)' isn
't true))
38 ASSERT_FALSE = $(if $(1) ,$(error failure: '$(1)' isn't false
))
40 $(call ASSERT_TRUE
, $(int-eq
0x0, 0))
41 $(call ASSERT_FALSE
,$(int-eq
1, 0))
42 $(call ASSERT_FALSE
,$(int-eq
1123123123, 9898787987))
43 $(call ASSERT_TRUE
, $(int-eq
1234567890, 1234567890))
44 $(call ASSERT_TRUE
, $(int-eq
0x1c, 28))
45 $(call ASSERT_TRUE
, $(int-eq
1c
, 28))
46 $(call ASSERT_TRUE
, $(int-ne
0x123, -0x123))
47 $(call ASSERT_TRUE
, $(int-ne
123, -0x123))
48 $(call ASSERT_FALSE
,$(int-ne
0x100, 256))
49 $(call ASSERT_FALSE
,$(int-ne
0x0, 0))
50 $(call ASSERT_FALSE
,$(int-ne
0x1c, 28))
51 $(call ASSERT_TRUE
, $(int-le
0, 0))
52 $(call ASSERT_TRUE
, $(int-le
-0, 0))
53 $(call ASSERT_FALSE
,$(int-le
5, 1))
54 $(call ASSERT_FALSE
,$(int-lt
5, 1))
55 $(call ASSERT_FALSE
,$(int-lt
5, 5))
56 $(call ASSERT_TRUE
, $(int-lt
9, 10))
57 $(call ASSERT_TRUE
, $(int-lt
-9, -8))
58 $(call ASSERT_TRUE
, $(int-ge
0, 0))
59 $(call ASSERT_TRUE
, $(int-ge
-0, 0))
60 $(call ASSERT_TRUE
, $(int-ge
1, 0))
61 $(call ASSERT_TRUE
, $(int-ge
-55, -55))
62 $(call ASSERT_TRUE
, $(int-ge
512, 400))
63 $(call ASSERT_TRUE
, $(int-ge
-18, -19))
64 $(call ASSERT_FALSE
,$(int-ge
-19, -18))
65 $(call ASSERT_FALSE
,$(int-ge
15, 20))
66 $(call ASSERT_FALSE
,$(int-gt
15, 20))
67 $(call ASSERT_FALSE
,$(int-gt
15, 15))
68 $(call ASSERT_TRUE
, $(int-gt
20, 15))
70 ASSERT2
= $(if
$(not
$(int-eq
$(1),$(2))),$(error failure
: '$(1)' -ne
'$(2)'))
71 $(call ASSERT2
,$(int-add
1, 1),0x2)
72 $(call ASSERT2
,$(int-add
1, 1, 1, 1, 1, 1, 1),7)
73 $(call ASSERT2
,$(int-add
1, -1),0)
74 $(call ASSERT2
,$(int-sub
1, -1),2)
75 $(call ASSERT2
,$(int-sub
1, 5),-4)
76 $(call ASSERT2
,$(int-mul
0x10, 0x20),0x200)
77 $(call ASSERT2
,$(int-mul
0x20, 0x10),0x200)
78 $(call ASSERT2
,$(int-mul
4, 7),28)
79 $(call ASSERT2
,$(int-mul
2, 2, 2, 2, 2, 4, 1, 1, 1, 1),128)
80 $(call ASSERT2
,$(int-div
0x1000, 0x100),0x10)
81 $(call ASSERT2
,$(int-div
999, 10),99)
82 $(call ASSERT2
,$(int-div
4096, 4,2,2,2,2),64)
83 #$(call ASSERT2,$(int-div 0x1230023213, 0),0x0)
84 $(call ASSERT2
,$(int-mod
19, 10),9)
85 $(call ASSERT2
,$(int-mod
9, 10),9)
86 $(call ASSERT2
,$(int-mod
30, 10),0)
87 $(call ASSERT2
,$(int-not
0),-1)
88 $(call ASSERT2
,$(int-and
1, 1),1)
89 $(call ASSERT2
,$(int-and
0x123123214, 0xfff),0x214)
90 $(call ASSERT2
,$(int-and
0x123123214, 0xf0f, 0xf),4)
91 $(call ASSERT2
,$(int-or
1, 1, 1, 2, 2),3)
92 $(call ASSERT2
,$(int-xor
1, 1, 2, 2),0)
93 $(call ASSERT2
,$(int-xor
1, 2, 4),7)
97 $(ECHO
) The math works.
6 * 7 = $(int-mul
6,7)