#!/usr/bin/python # Copyright 2014 Google Inc. # # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """ Test the VarsDict. """ import sys import test_variables import unittest sys.path.append(test_variables.GYP_GEN_DIR) import vars_dict_lib from vars_dict_lib import OrderedSet from vars_dict_lib import VarsDict from vars_dict_lib import VAR_NAMES class VarsDictTest(unittest.TestCase): """ Tests for the VarsDict class. """ # May not be needed. def setUp(self): self.__vars_dict = VarsDict() def assert_consistency(self, v_dict): self.assertIs(v_dict.LOCAL_CFLAGS, v_dict['LOCAL_CFLAGS']) self.assertIs(v_dict.LOCAL_CPPFLAGS, v_dict['LOCAL_CPPFLAGS']) self.assertIs(v_dict.LOCAL_SRC_FILES, v_dict['LOCAL_SRC_FILES']) self.assertIs(v_dict.LOCAL_SHARED_LIBRARIES, v_dict['LOCAL_SHARED_LIBRARIES']) self.assertIs(v_dict.LOCAL_STATIC_LIBRARIES, v_dict['LOCAL_STATIC_LIBRARIES']) self.assertIs(v_dict.LOCAL_C_INCLUDES, v_dict['LOCAL_C_INCLUDES']) self.assertIs(v_dict.LOCAL_EXPORT_C_INCLUDE_DIRS, v_dict['LOCAL_EXPORT_C_INCLUDE_DIRS']) self.assertIs(v_dict.KNOWN_TARGETS, v_dict['KNOWN_TARGETS']) def test_creation(self): v_dict = VarsDict() # VarsDict has one entry for each label in VAR_NAMES self.assertEqual(len(v_dict.keys()), len(VAR_NAMES)) for key in v_dict.keys(): self.assertIn(key, VAR_NAMES) # Each entry is an empty OrderedSet self.assertIsNotNone(v_dict[key]) self.assertIsInstance(v_dict[key], OrderedSet) self.assertEqual(len(v_dict[key]), 0) self.assert_consistency(v_dict) def test_intersection(self): v_dict_list = [] RANGE = 10 for i in range(RANGE): v_dict = VarsDict() # Add something common to each field, as well as a unique entry v_dict.LOCAL_CFLAGS.add('cflag') v_dict.LOCAL_CFLAGS.add(str(i)) v_dict.LOCAL_CPPFLAGS.add('cppflag') v_dict.LOCAL_CPPFLAGS.add(str(i)) v_dict.LOCAL_SRC_FILES.add('src') v_dict.LOCAL_SRC_FILES.add(str(i)) v_dict.LOCAL_SHARED_LIBRARIES.add('shared') v_dict.LOCAL_SHARED_LIBRARIES.add(str(i)) v_dict.LOCAL_STATIC_LIBRARIES.add('static') v_dict.LOCAL_STATIC_LIBRARIES.add(str(i)) v_dict.LOCAL_C_INCLUDES.add('includes') v_dict.LOCAL_C_INCLUDES.add(str(i)) v_dict.LOCAL_EXPORT_C_INCLUDE_DIRS.add('exports') v_dict.LOCAL_EXPORT_C_INCLUDE_DIRS.add(str(i)) v_dict.KNOWN_TARGETS.add('known') v_dict.KNOWN_TARGETS.add(str(i)) self.assert_consistency(v_dict) v_dict_list.append(v_dict) intersection = vars_dict_lib.intersect(v_dict_list) self.assert_consistency(intersection) for key in intersection.keys(): # Each field had one common item self.assertEqual(len(intersection[key]), 1) for item in intersection[key]: for other_v_dict in v_dict_list: self.assertNotIn(item, other_v_dict[key]) def main(): loader = unittest.TestLoader() suite = loader.loadTestsFromTestCase(VarsDictTest) unittest.TextTestRunner(verbosity=2).run(suite) if __name__ == "__main__": main()