|  | # | 
|  | # Licensed to the Apache Software Foundation (ASF) under one | 
|  | # or more contributor license agreements. See the NOTICE file | 
|  | # distributed with this work for additional information | 
|  | # regarding copyright ownership. The ASF licenses this file | 
|  | # to you under the Apache License, Version 2.0 (the | 
|  | # "License"); you may not use this file except in compliance | 
|  | # with the License. You may obtain a copy of the License at | 
|  | # | 
|  | #   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, | 
|  | # software distributed under the License is distributed on an | 
|  | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | # KIND, either express or implied. See the License for the | 
|  | # specific language governing permissions and limitations | 
|  | # under the License. | 
|  | # | 
|  |  | 
|  | import unittest | 
|  |  | 
|  | from DoubleConstantsTest import constants | 
|  |  | 
|  | # | 
|  | # In order to run the test under Windows. We need to create symbolic link | 
|  | # name 'thrift' to '../src' folder by using: | 
|  | # | 
|  | # mklink /D thrift ..\src | 
|  | # | 
|  |  | 
|  |  | 
|  | class TestRenderedDoubleConstants(unittest.TestCase): | 
|  | ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST = \ | 
|  | "failed to verify a double constant generated by Thrift (expected = %f, got = %f)" | 
|  | ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_LIST_TEST =\ | 
|  | "failed to verify a list item by Thrift (expected = %f, got = %f)" | 
|  | ASSERTION_MESSAGE_FOR_TYPE_CHECKS = "the rendered variable with name %s is not of double type" | 
|  |  | 
|  | # to make sure the variables inside Thrift files are generated correctly | 
|  | def test_rendered_double_constants(self): | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_INT_CONSTANT = 1.0 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT = -100.0 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT = 9223372036854775807.0 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT = -9223372036854775807.0 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS = 3.14159265359 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE = 1000000.1 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE = -1000000.1 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_DOUBLE = 1.7e+308 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE = 9223372036854775816.43 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_SMALL_DOUBLE = -1.7e+308 | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE = -9223372036854775816.43 | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_INT_CONSTANT_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_INT_CONSTANT, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_INT_CONSTANT, constants.DOUBLE_ASSIGNED_TO_INT_CONSTANT_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT, | 
|  | places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT, | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT, | 
|  | places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT, | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT, | 
|  | places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT, | 
|  | constants.DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS_TEST, | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS, | 
|  | constants.DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE, | 
|  | places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE_TEST, | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGE_DOUBLE_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_DOUBLE, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGE_DOUBLE_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE_TEST, | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_SMALL_DOUBLE_TEST, EXPECTED_DOUBLE_ASSIGNED_TO_SMALL_DOUBLE, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_SMALL_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_SMALL_DOUBLE_TEST)) | 
|  | self.assertAlmostEqual( | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE_TEST, | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE, places=7, | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_RENDERED_DOUBLE_CONSTANTS_TEST % ( | 
|  | EXPECTED_DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE, | 
|  | constants.DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE_TEST)) | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_INT_CONSTANT_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_INT_CONSTANT_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_NEGATIVE_INT_CONSTANT_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_LARGEST_INT_CONSTANT_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_SMALLEST_INT_CONSTANT_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_DOUBLE_WITH_MANY_DECIMALS_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_FRACTIONAL_DOUBLE_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_NEGATIVE_FRACTIONAL_DOUBLE_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_LARGE_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_LARGE_DOUBLE_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_LARGE_FRACTIONAL_DOUBLE_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_SMALL_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_SMALL_DOUBLE_TEST") | 
|  | self.assertTrue( | 
|  | isinstance(constants.DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE_TEST, float), | 
|  | msg=TestRenderedDoubleConstants.ASSERTION_MESSAGE_FOR_TYPE_CHECKS % | 
|  | "DOUBLE_ASSIGNED_TO_NEGATIVE_BUT_LARGE_FRACTIONAL_DOUBLE_TEST") | 
|  |  | 
|  | # to make sure the variables inside Thrift files are generated correctly | 
|  | def test_rendered_double_list(self): | 
|  | EXPECTED_DOUBLE_LIST = [1.0, -100.0, 100.0, 9223372036854775807.0, -9223372036854775807.0, 3.14159265359, | 
|  | 1000000.1, -1000000.1, 1.7e+308, -1.7e+308, 9223372036854775816.43, | 
|  | -9223372036854775816.43] | 
|  | self.assertEqual(len(constants.DOUBLE_LIST_TEST), len(EXPECTED_DOUBLE_LIST)) | 
|  | for i, expectedValue in enumerate(EXPECTED_DOUBLE_LIST): | 
|  | self.assertAlmostEqual(constants.DOUBLE_LIST_TEST[i], expectedValue, places=7) | 
|  |  | 
|  |  | 
|  | def suite(): | 
|  | suite = unittest.TestSuite() | 
|  | loader = unittest.TestLoader() | 
|  | suite.addTest(loader.loadTestsFromTestCase(TestRenderedDoubleConstants)) | 
|  | return suite | 
|  |  | 
|  |  | 
|  | if __name__ == "__main__": | 
|  | unittest.main(defaultTest="suite", testRunner=unittest.TextTestRunner(verbosity=2)) |