Statistics
| Branch: | Tag: | Revision:

root / test / py / ganeti.ht_unittest.py @ 7352d33b

History | View | Annotate | Download (9.2 kB)

1 ecdf0398 Michael Hanselmann
#!/usr/bin/python
2 ecdf0398 Michael Hanselmann
#
3 ecdf0398 Michael Hanselmann
4 2c9fa1ff Iustin Pop
# Copyright (C) 2011, 2012 Google Inc.
5 ecdf0398 Michael Hanselmann
#
6 ecdf0398 Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 ecdf0398 Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 ecdf0398 Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 ecdf0398 Michael Hanselmann
# (at your option) any later version.
10 ecdf0398 Michael Hanselmann
#
11 ecdf0398 Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 ecdf0398 Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 ecdf0398 Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ecdf0398 Michael Hanselmann
# General Public License for more details.
15 ecdf0398 Michael Hanselmann
#
16 ecdf0398 Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 ecdf0398 Michael Hanselmann
# along with this program; if not, write to the Free Software
18 ecdf0398 Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 ecdf0398 Michael Hanselmann
# 02110-1301, USA.
20 ecdf0398 Michael Hanselmann
21 ecdf0398 Michael Hanselmann
22 ecdf0398 Michael Hanselmann
"""Script for testing ganeti.ht"""
23 ecdf0398 Michael Hanselmann
24 ecdf0398 Michael Hanselmann
import unittest
25 ecdf0398 Michael Hanselmann
26 e055a2ab Dimitris Aragiorgis
from ganeti import constants
27 ecdf0398 Michael Hanselmann
from ganeti import ht
28 ecdf0398 Michael Hanselmann
29 ecdf0398 Michael Hanselmann
import testutils
30 ecdf0398 Michael Hanselmann
31 ecdf0398 Michael Hanselmann
32 ecdf0398 Michael Hanselmann
class TestTypeChecks(unittest.TestCase):
33 ecdf0398 Michael Hanselmann
  def testNone(self):
34 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TNotNone(None))
35 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TNone(None))
36 ecdf0398 Michael Hanselmann
37 ecdf0398 Michael Hanselmann
    for val in [0, True, "", "Hello World", [], range(5)]:
38 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TNotNone(val))
39 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TNone(val))
40 ecdf0398 Michael Hanselmann
41 ecdf0398 Michael Hanselmann
  def testBool(self):
42 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TBool(True))
43 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TBool(False))
44 ecdf0398 Michael Hanselmann
45 ecdf0398 Michael Hanselmann
    for val in [0, None, "", [], "Hello"]:
46 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TBool(val))
47 ecdf0398 Michael Hanselmann
48 ecdf0398 Michael Hanselmann
    for val in [True, -449, 1, 3, "x", "abc", [1, 2]]:
49 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TTrue(val))
50 ecdf0398 Michael Hanselmann
51 ecdf0398 Michael Hanselmann
    for val in [False, 0, None, []]:
52 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TTrue(val))
53 ecdf0398 Michael Hanselmann
54 ecdf0398 Michael Hanselmann
  def testInt(self):
55 ecdf0398 Michael Hanselmann
    for val in [-100, -3, 0, 16, 128, 923874]:
56 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TInt(val))
57 697f49d5 Michael Hanselmann
      self.assertTrue(ht.TNumber(val))
58 ecdf0398 Michael Hanselmann
59 ecdf0398 Michael Hanselmann
    for val in [False, True, None, "", [], "Hello", 0.0, 0.23, -3818.163]:
60 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TInt(val))
61 ecdf0398 Michael Hanselmann
62 ecdf0398 Michael Hanselmann
    for val in range(0, 100, 4):
63 2c9fa1ff Iustin Pop
      self.assertTrue(ht.TNonNegativeInt(val))
64 ecdf0398 Michael Hanselmann
      neg = -(val + 1)
65 2c9fa1ff Iustin Pop
      self.assertFalse(ht.TNonNegativeInt(neg))
66 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TPositiveInt(neg))
67 ecdf0398 Michael Hanselmann
68 2c9fa1ff Iustin Pop
      self.assertFalse(ht.TNonNegativeInt(0.1 + val))
69 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TPositiveInt(0.1 + val))
70 ecdf0398 Michael Hanselmann
71 ecdf0398 Michael Hanselmann
    for val in [0, 0.1, 0.9, -0.3]:
72 2c9fa1ff Iustin Pop
      self.assertFalse(ht.TPositiveInt(val))
73 ecdf0398 Michael Hanselmann
74 ecdf0398 Michael Hanselmann
    for val in range(1, 100, 4):
75 2c9fa1ff Iustin Pop
      self.assertTrue(ht.TPositiveInt(val))
76 2c9fa1ff Iustin Pop
      self.assertFalse(ht.TPositiveInt(0.1 + val))
77 ecdf0398 Michael Hanselmann
78 ecdf0398 Michael Hanselmann
  def testFloat(self):
79 ecdf0398 Michael Hanselmann
    for val in [-100.21, -3.0, 0.0, 16.12, 128.3433, 923874.928]:
80 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TFloat(val))
81 697f49d5 Michael Hanselmann
      self.assertTrue(ht.TNumber(val))
82 ecdf0398 Michael Hanselmann
83 ecdf0398 Michael Hanselmann
    for val in [False, True, None, "", [], "Hello", 0, 28, -1, -3281]:
84 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TFloat(val))
85 ecdf0398 Michael Hanselmann
86 697f49d5 Michael Hanselmann
  def testNumber(self):
87 697f49d5 Michael Hanselmann
    for val in [-100, -3, 0, 16, 128, 923874,
88 697f49d5 Michael Hanselmann
                -100.21, -3.0, 0.0, 16.12, 128.3433, 923874.928]:
89 697f49d5 Michael Hanselmann
      self.assertTrue(ht.TNumber(val))
90 697f49d5 Michael Hanselmann
91 697f49d5 Michael Hanselmann
    for val in [False, True, None, "", [], "Hello", "1"]:
92 697f49d5 Michael Hanselmann
      self.assertFalse(ht.TNumber(val))
93 697f49d5 Michael Hanselmann
94 ecdf0398 Michael Hanselmann
  def testString(self):
95 ecdf0398 Michael Hanselmann
    for val in ["", "abc", "Hello World", "123",
96 ecdf0398 Michael Hanselmann
                u"", u"\u272C", u"abc"]:
97 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TString(val))
98 ecdf0398 Michael Hanselmann
99 ecdf0398 Michael Hanselmann
    for val in [False, True, None, [], 0, 1, 5, -193, 93.8582]:
100 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TString(val))
101 ecdf0398 Michael Hanselmann
102 ecdf0398 Michael Hanselmann
  def testElemOf(self):
103 ecdf0398 Michael Hanselmann
    fn = ht.TElemOf(range(10))
104 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(0))
105 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(3))
106 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(9))
107 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(-1))
108 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(100))
109 ecdf0398 Michael Hanselmann
110 ecdf0398 Michael Hanselmann
    fn = ht.TElemOf([])
111 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(0))
112 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(100))
113 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(True))
114 ecdf0398 Michael Hanselmann
115 ecdf0398 Michael Hanselmann
    fn = ht.TElemOf(["Hello", "World"])
116 ecdf0398 Michael Hanselmann
    self.assertTrue(fn("Hello"))
117 ecdf0398 Michael Hanselmann
    self.assertTrue(fn("World"))
118 ecdf0398 Michael Hanselmann
    self.assertFalse(fn("e"))
119 ecdf0398 Michael Hanselmann
120 ecdf0398 Michael Hanselmann
  def testList(self):
121 ecdf0398 Michael Hanselmann
    for val in [[], range(10), ["Hello", "World", "!"]]:
122 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TList(val))
123 ecdf0398 Michael Hanselmann
124 ecdf0398 Michael Hanselmann
    for val in [False, True, None, {}, 0, 1, 5, -193, 93.8582]:
125 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TList(val))
126 ecdf0398 Michael Hanselmann
127 ecdf0398 Michael Hanselmann
  def testDict(self):
128 ecdf0398 Michael Hanselmann
    for val in [{}, dict.fromkeys(range(10)), {"Hello": [], "World": "!"}]:
129 ecdf0398 Michael Hanselmann
      self.assertTrue(ht.TDict(val))
130 ecdf0398 Michael Hanselmann
131 ecdf0398 Michael Hanselmann
    for val in [False, True, None, [], 0, 1, 5, -193, 93.8582]:
132 ecdf0398 Michael Hanselmann
      self.assertFalse(ht.TDict(val))
133 ecdf0398 Michael Hanselmann
134 ecdf0398 Michael Hanselmann
  def testIsLength(self):
135 ecdf0398 Michael Hanselmann
    fn = ht.TIsLength(10)
136 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(range(10)))
137 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(range(1)))
138 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(range(100)))
139 ecdf0398 Michael Hanselmann
140 ecdf0398 Michael Hanselmann
  def testAnd(self):
141 ecdf0398 Michael Hanselmann
    fn = ht.TAnd(ht.TNotNone, ht.TString)
142 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(""))
143 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(1))
144 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(None))
145 ecdf0398 Michael Hanselmann
146 ecdf0398 Michael Hanselmann
  def testOr(self):
147 fd9f58fd Iustin Pop
    fn = ht.TMaybe(ht.TAnd(ht.TString, ht.TIsLength(5)))
148 ecdf0398 Michael Hanselmann
    self.assertTrue(fn("12345"))
149 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(None))
150 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(1))
151 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(""))
152 ecdf0398 Michael Hanselmann
    self.assertFalse(fn("abc"))
153 ecdf0398 Michael Hanselmann
154 ecdf0398 Michael Hanselmann
  def testMap(self):
155 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMap(str, ht.TString)(123))
156 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMap(int, ht.TInt)("9999"))
157 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMap(lambda x: x + 100, ht.TString)(123))
158 ecdf0398 Michael Hanselmann
159 ecdf0398 Michael Hanselmann
  def testNonEmptyString(self):
160 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TNonEmptyString("xyz"))
161 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TNonEmptyString("Hello World"))
162 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TNonEmptyString(""))
163 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TNonEmptyString(None))
164 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TNonEmptyString([]))
165 ecdf0398 Michael Hanselmann
166 ecdf0398 Michael Hanselmann
  def testMaybeString(self):
167 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeString("xyz"))
168 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeString("Hello World"))
169 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeString(None))
170 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMaybeString(""))
171 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMaybeString([]))
172 ecdf0398 Michael Hanselmann
173 ecdf0398 Michael Hanselmann
  def testMaybeBool(self):
174 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeBool(False))
175 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeBool(True))
176 ecdf0398 Michael Hanselmann
    self.assertTrue(ht.TMaybeBool(None))
177 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMaybeBool([]))
178 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMaybeBool("0"))
179 ecdf0398 Michael Hanselmann
    self.assertFalse(ht.TMaybeBool("False"))
180 ecdf0398 Michael Hanselmann
181 ecdf0398 Michael Hanselmann
  def testListOf(self):
182 ecdf0398 Michael Hanselmann
    fn = ht.TListOf(ht.TNonEmptyString)
183 ecdf0398 Michael Hanselmann
    self.assertTrue(fn([]))
184 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(["x"]))
185 ecdf0398 Michael Hanselmann
    self.assertTrue(fn(["Hello", "World"]))
186 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(None))
187 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(False))
188 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(range(3)))
189 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(["x", None]))
190 ecdf0398 Michael Hanselmann
191 ecdf0398 Michael Hanselmann
  def testDictOf(self):
192 ecdf0398 Michael Hanselmann
    fn = ht.TDictOf(ht.TNonEmptyString, ht.TInt)
193 ecdf0398 Michael Hanselmann
    self.assertTrue(fn({}))
194 ecdf0398 Michael Hanselmann
    self.assertTrue(fn({"x": 123, "y": 999}))
195 ecdf0398 Michael Hanselmann
    self.assertFalse(fn(None))
196 ecdf0398 Michael Hanselmann
    self.assertFalse(fn({1: "x"}))
197 ecdf0398 Michael Hanselmann
    self.assertFalse(fn({"x": ""}))
198 ecdf0398 Michael Hanselmann
    self.assertFalse(fn({"x": None}))
199 ecdf0398 Michael Hanselmann
    self.assertFalse(fn({"": 8234}))
200 ecdf0398 Michael Hanselmann
201 a464ce71 Michael Hanselmann
  def testStrictDictRequireAllExclusive(self):
202 a464ce71 Michael Hanselmann
    fn = ht.TStrictDict(True, True, { "a": ht.TInt, })
203 a464ce71 Michael Hanselmann
    self.assertFalse(fn(1))
204 a464ce71 Michael Hanselmann
    self.assertFalse(fn(None))
205 a464ce71 Michael Hanselmann
    self.assertFalse(fn({}))
206 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": "Hello", }))
207 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"unknown": 999,}))
208 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"unknown": None,}))
209 a464ce71 Michael Hanselmann
210 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": 123, }))
211 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": -5, }))
212 a464ce71 Michael Hanselmann
213 a464ce71 Michael Hanselmann
    fn = ht.TStrictDict(True, True, { "a": ht.TInt, "x": ht.TString, })
214 a464ce71 Michael Hanselmann
    self.assertFalse(fn({}))
215 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": -5, }))
216 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": 123, "x": "", }))
217 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": 123, "x": None, }))
218 a464ce71 Michael Hanselmann
219 a464ce71 Michael Hanselmann
  def testStrictDictExclusive(self):
220 a464ce71 Michael Hanselmann
    fn = ht.TStrictDict(False, True, { "a": ht.TInt, "b": ht.TList, })
221 a464ce71 Michael Hanselmann
    self.assertTrue(fn({}))
222 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": 123, }))
223 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"b": range(4), }))
224 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"b": 123, }))
225 a464ce71 Michael Hanselmann
226 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"foo": {}, }))
227 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"bar": object(), }))
228 a464ce71 Michael Hanselmann
229 a464ce71 Michael Hanselmann
  def testStrictDictRequireAll(self):
230 a464ce71 Michael Hanselmann
    fn = ht.TStrictDict(True, False, { "a": ht.TInt, "m": ht.TInt, })
231 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": 1, "m": 2, "bar": object(), }))
232 a464ce71 Michael Hanselmann
    self.assertFalse(fn({}))
233 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": 1, "bar": object(), }))
234 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": 1, "m": [], "bar": object(), }))
235 a464ce71 Michael Hanselmann
236 a464ce71 Michael Hanselmann
  def testStrictDict(self):
237 a464ce71 Michael Hanselmann
    fn = ht.TStrictDict(False, False, { "a": ht.TInt, })
238 a464ce71 Michael Hanselmann
    self.assertTrue(fn({}))
239 a464ce71 Michael Hanselmann
    self.assertFalse(fn({"a": ""}))
240 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"a": 11}))
241 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"other": 11}))
242 a464ce71 Michael Hanselmann
    self.assertTrue(fn({"other": object()}))
243 a464ce71 Michael Hanselmann
244 8620f50e Michael Hanselmann
  def testJobId(self):
245 8620f50e Michael Hanselmann
    for i in [0, 1, 4395, 2347625220]:
246 8620f50e Michael Hanselmann
      self.assertTrue(ht.TJobId(i))
247 8620f50e Michael Hanselmann
      self.assertTrue(ht.TJobId(str(i)))
248 8620f50e Michael Hanselmann
      self.assertFalse(ht.TJobId(-(i + 1)))
249 8620f50e Michael Hanselmann
250 8620f50e Michael Hanselmann
    for i in ["", "-", ".", ",", "a", "99j", "job-123", "\t", " 83 ",
251 8620f50e Michael Hanselmann
              None, [], {}, object()]:
252 8620f50e Michael Hanselmann
      self.assertFalse(ht.TJobId(i))
253 8620f50e Michael Hanselmann
254 b247c6fc Michael Hanselmann
  def testRelativeJobId(self):
255 b247c6fc Michael Hanselmann
    for i in [-1, -93, -4395]:
256 b247c6fc Michael Hanselmann
      self.assertTrue(ht.TRelativeJobId(i))
257 b247c6fc Michael Hanselmann
      self.assertFalse(ht.TRelativeJobId(str(i)))
258 b247c6fc Michael Hanselmann
259 b247c6fc Michael Hanselmann
    for i in [0, 1, 2, 10, 9289, "", "0", "-1", "-999"]:
260 b247c6fc Michael Hanselmann
      self.assertFalse(ht.TRelativeJobId(i))
261 b247c6fc Michael Hanselmann
      self.assertFalse(ht.TRelativeJobId(str(i)))
262 b247c6fc Michael Hanselmann
263 8620f50e Michael Hanselmann
  def testItems(self):
264 8620f50e Michael Hanselmann
    self.assertRaises(AssertionError, ht.TItems, [])
265 8620f50e Michael Hanselmann
266 8620f50e Michael Hanselmann
    fn = ht.TItems([ht.TString])
267 8620f50e Michael Hanselmann
    self.assertFalse(fn([0]))
268 8620f50e Michael Hanselmann
    self.assertFalse(fn([None]))
269 8620f50e Michael Hanselmann
    self.assertTrue(fn(["Hello"]))
270 8620f50e Michael Hanselmann
    self.assertTrue(fn(["Hello", "World"]))
271 8620f50e Michael Hanselmann
    self.assertTrue(fn(["Hello", 0, 1, 2, "anything"]))
272 8620f50e Michael Hanselmann
273 8620f50e Michael Hanselmann
    fn = ht.TItems([ht.TAny, ht.TInt, ht.TAny])
274 8620f50e Michael Hanselmann
    self.assertTrue(fn(["Hello", 0, []]))
275 8620f50e Michael Hanselmann
    self.assertTrue(fn(["Hello", 893782]))
276 8620f50e Michael Hanselmann
    self.assertTrue(fn([{}, -938210858947, None]))
277 8620f50e Michael Hanselmann
    self.assertFalse(fn(["Hello", []]))
278 8620f50e Michael Hanselmann
279 16091a6e Michael Hanselmann
  def testInstanceOf(self):
280 16091a6e Michael Hanselmann
    fn = ht.TInstanceOf(self.__class__)
281 16091a6e Michael Hanselmann
    self.assertTrue(fn(self))
282 16091a6e Michael Hanselmann
    self.assertTrue(str(fn).startswith("Instance of "))
283 16091a6e Michael Hanselmann
284 16091a6e Michael Hanselmann
    self.assertFalse(fn(None))
285 16091a6e Michael Hanselmann
286 e055a2ab Dimitris Aragiorgis
  def testMaybeValueNone(self):
287 e055a2ab Dimitris Aragiorgis
    fn = ht.TMaybeValueNone(ht.TInt)
288 e055a2ab Dimitris Aragiorgis
289 e055a2ab Dimitris Aragiorgis
    self.assertTrue(fn(None))
290 e055a2ab Dimitris Aragiorgis
    self.assertTrue(fn(0))
291 e055a2ab Dimitris Aragiorgis
    self.assertTrue(fn(constants.VALUE_NONE))
292 e055a2ab Dimitris Aragiorgis
293 e055a2ab Dimitris Aragiorgis
    self.assertFalse(fn(""))
294 e055a2ab Dimitris Aragiorgis
    self.assertFalse(fn([]))
295 e055a2ab Dimitris Aragiorgis
    self.assertFalse(fn(constants.VALUE_DEFAULT))
296 e055a2ab Dimitris Aragiorgis
297 ecdf0398 Michael Hanselmann
298 ecdf0398 Michael Hanselmann
if __name__ == "__main__":
299 ecdf0398 Michael Hanselmann
  testutils.GanetiTestProgram()