blob: 4f26ac9bf4cc2de3559475d858b7b41e391c94f3 [file] [log] [blame]
Scott Bakera33ccb02018-01-26 13:03:28 -08001
2# Copyright 2017-present Open Networking Foundation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16
17import unittest
18from xosgenx.jinja2_extensions.base import *
Scott Bakera1b089a2018-10-05 09:59:17 -070019
20
21# Several of the base functions require a Field object.
22def _field(name, singular=None, plural=None):
23 f = {}
24 f["name"] = name
25 f["options"] = {}
26 if singular:
27 f["options"]["singular"] = singular
28 if plural:
29 f["options"]["plural"] = plural
30 return f
Scott Bakera33ccb02018-01-26 13:03:28 -080031
32class Jinja2BaseTests(unittest.TestCase):
33 def test_xproto_is_true(self):
34 self.assertTrue(xproto_is_true(True))
35 self.assertTrue(xproto_is_true("True"))
36 self.assertTrue(xproto_is_true('"True"'))
37 self.assertFalse(xproto_is_true(False))
38 self.assertFalse(xproto_is_true("False"))
39 self.assertFalse(xproto_is_true('"False"'))
40 self.assertFalse(xproto_is_true(None))
41 self.assertFalse(xproto_is_true("something else"))
42
Scott Bakera1b089a2018-10-05 09:59:17 -070043 def test_unquote(self):
44 self.assertEqual(xproto_unquote("foo"), "foo")
45 self.assertEqual(xproto_unquote('"foo"'), "foo")
46
47 def test_pluralize(self):
48 self.assertEqual(xproto_pluralize(_field("sheep")), "sheep")
49 self.assertEqual(xproto_pluralize(_field("slice")), "slices")
50 self.assertEqual(xproto_pluralize(_field("network")), "networks")
51 self.assertEqual(xproto_pluralize(_field("omf_friendly")), "omf_friendlies")
52 # invalid words, should usually return <word>-es
53 self.assertEqual(xproto_pluralize(_field("xxx")), "xxxes")
54 # if a field option is set, use that
55 self.assertEqual(xproto_pluralize(_field("sheep", plural="turtles")), "turtles")
56
57 def test_singularize(self):
58 self.assertEqual(xproto_singularize(_field("sheep")), "sheep")
59 self.assertEqual(xproto_singularize(_field("slices")), "slice")
60 self.assertEqual(xproto_singularize(_field("networks")), "network")
61 self.assertEqual(xproto_singularize(_field("omf_friendlies")), "omf_friendly")
62 # invalid words, return the original word
63 self.assertEqual(xproto_singularize(_field("xxx")), "xxx")
64 # if a field option is set, use that
65 self.assertEqual(xproto_pluralize(_field("sheep", plural="turtles")), "turtles")
66
67 def test_singularize_pluralize(self):
68 self.assertEqual(xproto_singularize_pluralize(_field("sheep")), "sheep")
69 self.assertEqual(xproto_singularize_pluralize(_field("slices")), "slices")
70 self.assertEqual(xproto_singularize_pluralize(_field("networks")), "networks")
71 self.assertEqual(xproto_singularize_pluralize(_field("omf_friendlies")), "omf_friendlies")
72 # invalid words, should usually return <word>-es
73 self.assertEqual(xproto_singularize_pluralize(_field("xxx")), "xxxes")
74 # if a field option is set, use that
75 self.assertEqual(xproto_singularize(_field("sheep", singular="turtle")), "turtle")
76
77
Scott Bakera33ccb02018-01-26 13:03:28 -080078if __name__ == '__main__':
79 unittest.main()
80
81