# -*- coding: utf-8 -*- # # Copyright (C) 2012 Ben Kurtovic # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. import unittest from mwparserfromhell.parameter import Parameter from mwparserfromhell.template import Template class TestParameter(unittest.TestCase): def setUp(self): self.name = "foo" self.value1 = "bar" self.value2 = "{{spam}}" self.value3 = "bar{{spam}}" self.value4 = "embedded {{eggs|spam|baz=buz}} {{goes}} here" self.templates2 = [Template("spam")] self.templates3 = [Template("spam")] self.templates4 = [Template("eggs", [Parameter("1", "spam"), Parameter("baz", "buz")]), Template("goes")] def test_construct(self): Parameter(self.name, self.value1) Parameter(self.name, self.value2, self.templates2) Parameter(name=self.name, value=self.value3) Parameter(name=self.name, value=self.value4, templates=self.templates4) def test_name(self): params = [ Parameter(self.name, self.value1), Parameter(self.name, self.value2, self.templates2), Parameter(name=self.name, value=self.value3), Parameter(name=self.name, value=self.value4, templates=self.templates4) ] for param in params: self.assertEqual(param.name, self.name) def test_value(self): tests = [ (Parameter(self.name, self.value1), self.value1), (Parameter(self.name, self.value2, self.templates2), self.value2), (Parameter(name=self.name, value=self.value3), self.value3), (Parameter(name=self.name, value=self.value4, templates=self.templates4), self.value4) ] for param, correct in tests: self.assertEqual(param.value, correct) def test_templates(self): tests = [ (Parameter(self.name, self.value3, self.templates3), self.templates3), (Parameter(name=self.name, value=self.value4, templates=self.templates4), self.templates4) ] for param, correct in tests: self.assertEqual(param.templates, correct) def test_magic(self): params = [Parameter(self.name, self.value1), Parameter(self.name, self.value2, self.templates2), Parameter(self.name, self.value3, self.templates3), Parameter(self.name, self.value4, self.templates4)] for param in params: self.assertEqual(repr(param), repr(param.value)) self.assertEqual(str(param), str(param.value)) self.assertIs(param < "eggs", param.value < "eggs") self.assertIs(param <= "bar{{spam}}", param.value <= "bar{{spam}}") self.assertIs(param == "bar", param.value == "bar") self.assertIs(param != "bar", param.value != "bar") self.assertIs(param > "eggs", param.value > "eggs") self.assertIs(param >= "bar{{spam}}", param.value >= "bar{{spam}}") self.assertEquals(bool(param), bool(param.value)) self.assertEquals(len(param), len(param.value)) self.assertEquals(list(param), list(param.value)) self.assertEquals(param[2], param.value[2]) self.assertEquals(list(reversed(param)), list(reversed(param.value))) self.assertIs("bar" in param, "bar" in param.value) self.assertEquals(param + "test", param.value + "test") self.assertEquals("test" + param, "test" + param.value) # add param # add template left # add template right self.assertEquals(param * 3, Parameter(param.name, param.value * 3, param.templates * 3)) self.assertEquals(3 * param, Parameter(param.name, 3 * param.value, 3 * param.templates)) # add param inplace # add template implace # add str inplace # multiply int inplace self.assertIsInstance(param, Parameter) self.assertIsInstance(param.value, str) if __name__ == "__main__": unittest.main(verbosity=2)