class SyntheticDataTests(unittest.TestCase):
    def setUp(self):
        self.synthetic_data = SyntheticData(swift_file=example_swiftfile)

    def test_init_no_swift_file(self):
        empty_data = SyntheticData()
        self.assertEqual(0, empty_data.loc)
        self.assertEqual(0, empty_data.noc)
        self.assertEqual(0, empty_data.number_of_concrete_data_structures)
        self.assertEqual(0, empty_data.number_of_interfaces)
        self.assertEqual(0, empty_data.number_of_methods)
        self.assertEqual(0, empty_data.number_of_tests)

    def test_synthetic_init_swiftfile(self):
        self.assertEqual(1, self.synthetic_data.loc)
        self.assertEqual(7, self.synthetic_data.noc)
        self.assertEqual(
            2, self.synthetic_data.number_of_concrete_data_structures)
        self.assertEqual(3, self.synthetic_data.number_of_interfaces)
        self.assertEqual(4, self.synthetic_data.number_of_methods)
        self.assertEqual(1, self.synthetic_data.number_of_tests)

    def test_append_data(self):
        additional_data = SyntheticData(swift_file=example_swiftfile)
        self.synthetic_data.append_data(data=additional_data)
        self.assertEqual(2, self.synthetic_data.loc)
        self.assertEqual(14, self.synthetic_data.noc)
        self.assertEqual(
            4, self.synthetic_data.number_of_concrete_data_structures)
        self.assertEqual(6, self.synthetic_data.number_of_interfaces)
        self.assertEqual(8, self.synthetic_data.number_of_methods)
        self.assertEqual(2, self.synthetic_data.number_of_tests)

    def test_remove_data(self):
        additional_data = SyntheticData(swift_file=example_swiftfile)
        self.synthetic_data.remove_data(data=additional_data)
        self.assertEqual(0, self.synthetic_data.loc)
        self.assertEqual(0, self.synthetic_data.noc)
        self.assertEqual(
            0, self.synthetic_data.number_of_concrete_data_structures)
        self.assertEqual(0, self.synthetic_data.number_of_interfaces)
        self.assertEqual(0, self.synthetic_data.number_of_methods)
        self.assertEqual(0, self.synthetic_data.number_of_tests)

    def test_poc(self):
        self.assertAlmostEqual(87.5, self.synthetic_data.poc)

    def test_as_dict(self):
        expected_dict = {
            "loc": 1,
            "noc": 7,
            "n_a": 3,
            "n_c": 2,
            "nom": 4,
            "not": 1,
            "poc": 87.5
        }
        self.assertEqual(expected_dict, self.synthetic_data.as_dict)
 def test_data(self):
     data = SyntheticData(loc=2,
                          noc=14,
                          number_of_interfaces=11,
                          number_of_concrete_data_structures=6,
                          number_of_methods=8,
                          number_of_tests=2)
     self.assertEqual(data, self.submodule.data)
 def test_init_no_swift_file(self):
     empty_data = SyntheticData()
     self.assertEqual(0, empty_data.loc)
     self.assertEqual(0, empty_data.noc)
     self.assertEqual(0, empty_data.number_of_concrete_data_structures)
     self.assertEqual(0, empty_data.number_of_interfaces)
     self.assertEqual(0, empty_data.number_of_methods)
     self.assertEqual(0, empty_data.number_of_tests)
 def test_empty_data(self):
     data = SyntheticData(loc=0,
                          noc=0,
                          number_of_interfaces=0,
                          number_of_concrete_data_structures=0,
                          number_of_methods=0,
                          number_of_tests=0)
     self.assertEqual(
         data,
         SubModule(name="", files=[], submodules=[], parent=None).data)
 def test_remove_data(self):
     additional_data = SyntheticData(swift_file=example_swiftfile)
     self.synthetic_data.remove_data(data=additional_data)
     self.assertEqual(0, self.synthetic_data.loc)
     self.assertEqual(0, self.synthetic_data.noc)
     self.assertEqual(
         0, self.synthetic_data.number_of_concrete_data_structures)
     self.assertEqual(0, self.synthetic_data.number_of_interfaces)
     self.assertEqual(0, self.synthetic_data.number_of_methods)
     self.assertEqual(0, self.synthetic_data.number_of_tests)
 def test_add_data(self):
     additional_data = SyntheticData.from_swift_file(
         swift_file=example_swiftfile)
     self.synthetic_data += additional_data
     self.assertEqual(2, self.synthetic_data.loc)
     self.assertEqual(14, self.synthetic_data.noc)
     self.assertEqual(
         4, self.synthetic_data.number_of_concrete_data_structures)
     self.assertEqual(6, self.synthetic_data.number_of_interfaces)
     self.assertEqual(8, self.synthetic_data.number_of_methods)
     self.assertEqual(2, self.synthetic_data.number_of_tests)
    def test_append_framework(self):
        framework_additional_data = SyntheticData(swift_file=example_swiftfile)
        test_framework = Framework('Test')
        test_framework.append_import(Framework('Imported'))
        test_framework.data = framework_additional_data

        self.framework_data.append_framework(test_framework)
        self.assertEqual(2, self.framework_data.loc)
        self.assertEqual(14, self.framework_data.noc)
        self.assertEqual(
            4, self.framework_data.number_of_concrete_data_structures)
        self.assertEqual(6, self.framework_data.number_of_interfaces)
        self.assertEqual(8, self.framework_data.number_of_methods)
        self.assertEqual(2, self.framework_data.number_of_tests)
        self.assertEqual(3, self.framework_data.n_o_i)
 def setUp(self):
     self.synthetic_data = SyntheticData.from_swift_file(
         swift_file=example_swiftfile)