def testReduceConditions(self): # Set conditions span all of the supported architectures for linux. a = SourceSet(set(['foo.c']), set([SourceListCondition('ia32', 'Chromium', 'linux'), SourceListCondition('x64', 'Chromium', 'linux'), SourceListCondition('arm', 'Chromium', 'linux'), SourceListCondition('arm64', 'Chromium', 'linux'), SourceListCondition('arm-neon', 'Chromium', 'linux'), SourceListCondition('mipsel', 'Chromium', 'linux'), SourceListCondition('mips64el', 'Chromium', 'linux')])) gg.ReduceConditionalLogic(a) # Conditions should reduce to a single condition with wild-card for arch. expected = set([SourceListCondition('*', 'Chromium', 'linux')]) self.assertEqualSets(expected, a.conditions) # Set conditions span all of the supported architectures for windows. b = SourceSet(set(['foo.c']), set([SourceListCondition('ia32', 'Chromium', 'win'), SourceListCondition('x64', 'Chromium', 'win')])) gg.ReduceConditionalLogic(b) # Conditions should reduce to a single condition with wild-card for expected = set([SourceListCondition('*', 'Chromium', 'win')]) self.assertEqualSets(expected, b.conditions) # Set conditions span all supported architectures and brandings for windows. b = SourceSet(set(['foo.c']), set([SourceListCondition('ia32', 'Chromium', 'win'), SourceListCondition('x64', 'Chromium', 'win'), SourceListCondition('ia32', 'Chrome', 'win'), SourceListCondition('x64', 'Chrome', 'win')])) gg.ReduceConditionalLogic(b) expected = set([SourceListCondition('*', '*', 'win')]) self.assertEqualSets(expected, b.conditions) # Set conditions span all supported platforms. c = SourceSet(set(['foo.c']), set([SourceListCondition('x64', 'Chromium', 'win'), SourceListCondition('x64', 'Chromium', 'mac'), SourceListCondition('x64', 'Chromium', 'linux'), SourceListCondition('x64', 'Chromium', 'android')])) gg.ReduceConditionalLogic(c) expected = set([SourceListCondition('x64', 'Chromium', '*')]) self.assertEqualSets(expected, c.conditions) # Spans all architectures for Chromium, but also all targets for ia32 & win. d = SourceSet(set(['foo.c']), set([SourceListCondition('x64', 'Chromium', 'win'), SourceListCondition('ia32', 'Chromium', 'win'), SourceListCondition('ia32', 'Chrome', 'win')])) gg.ReduceConditionalLogic(d) expected = set([SourceListCondition('*', 'Chromium', 'win'), SourceListCondition('ia32', '*', 'win')]) self.assertEqualSets(expected, d.conditions)
def testReduceConditions_fullSpan(self): # Build SourceSet with conditions spanning every combination of attributes. ss = SourceSet(set(['foo.c']), set()) for arch in gg.SUPPORT_MATRIX[gg.Attr.ARCHITECTURE]: for target in gg.SUPPORT_MATRIX[gg.Attr.TARGET]: for platform in gg.SUPPORT_MATRIX[gg.Attr.PLATFORM]: ss.conditions.add(SourceListCondition(arch, target, platform)) gg.ReduceConditionalLogic(ss) expected = set([SourceListCondition('*', '*', '*')]) self.assertEqualSets(expected, ss.conditions)