def test_omit_symbol(self): # Thorough testing of the cases involved here is handled by # SymbolPresenceTest. src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['x86']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['introduced=14']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['vndk']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue())
def test_omit_symbol(self): src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['x86']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['introduced=14']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', ['vndk']), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue())
def test_parse(self): input_file = cStringIO.StringIO( textwrap.dedent("""\ VERSION_1 { local: hidden1; global: foo; bar; # baz }; VERSION_2 { # wasd # Implicit global scope. woodly; doodly; # asdf local: qwerty; } VERSION_1; """)) parser = gsl.SymbolFileParser(input_file, {}) versions = parser.parse() expected = [ gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', []), gsl.Symbol('bar', ['baz']), ]), gsl.Version('VERSION_2', 'VERSION_1', ['wasd'], [ gsl.Symbol('woodly', []), gsl.Symbol('doodly', ['asdf']), ]), ] self.assertEqual(expected, versions)
def test_omit_version(self): # Thorough testing of the cases involved here is handled by # OmitVersionTest, PrivateVersionTest, and SymbolPresenceTest. src_file = io.StringIO() version_file = io.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False, False) version = gsl.Version('VERSION_PRIVATE', None, [], [ gsl.Symbol('foo', []), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION', None, ['x86'], [ gsl.Symbol('foo', []), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue()) version = gsl.Version('VERSION', None, ['introduced=14'], [ gsl.Symbol('foo', []), ]) generator.write_version(version) self.assertEqual('', src_file.getvalue()) self.assertEqual('', version_file.getvalue())
def test_omit_arch(self): self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, [], []), 'arm', 9, False)) self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, ['arm'], []), 'arm', 9, False)) self.assertTrue( gsl.should_omit_version(gsl.Version('foo', None, ['x86'], []), 'arm', 9, False))
def test_omit_vndk(self): self.assertTrue( gsl.should_omit_version(gsl.Version('foo', None, ['vndk'], []), 'arm', 9, False)) self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, [], []), 'arm', 9, True)) self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, ['vndk'], []), 'arm', 9, True))
def test_omit_api(self): self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, [], []), 'arm', 9, False)) self.assertFalse( gsl.should_omit_version( gsl.Version('foo', None, ['introduced=9'], []), 'arm', 9, False)) self.assertTrue( gsl.should_omit_version( gsl.Version('foo', None, ['introduced=14'], []), 'arm', 9, False))
def test_omit_private(self): self.assertFalse( gsl.should_omit_version(gsl.Version('foo', None, [], []), 'arm', 9, False)) self.assertTrue( gsl.should_omit_version(gsl.Version('foo_PRIVATE', None, [], []), 'arm', 9, False)) self.assertTrue( gsl.should_omit_version(gsl.Version('foo_PLATFORM', None, [], []), 'arm', 9, False)) self.assertTrue( gsl.should_omit_version( gsl.Version('foo', None, ['platform-only'], []), 'arm', 9, False))
def test_write(self): src_file = io.StringIO() version_file = io.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9, False, False) versions = [ gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', []), gsl.Symbol('bar', ['var']), gsl.Symbol('woodly', ['weak']), gsl.Symbol('doodly', ['weak', 'var']), ]), gsl.Version('VERSION_2', 'VERSION_1', [], [ gsl.Symbol('baz', []), ]), gsl.Version('VERSION_3', 'VERSION_1', [], [ gsl.Symbol('qux', ['versioned=14']), ]), ] generator.write(versions) expected_src = textwrap.dedent("""\ void foo() {} int bar = 0; __attribute__((weak)) void woodly() {} __attribute__((weak)) int doodly = 0; void baz() {} void qux() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; bar; woodly; doodly; }; VERSION_2 { global: baz; } VERSION_1; """) self.assertEqual(expected_version, version_file.getvalue())
def test_write(self): src_file = cStringIO.StringIO() version_file = cStringIO.StringIO() generator = gsl.Generator(src_file, version_file, 'arm', 9) versions = [ gsl.Version('VERSION_1', None, [], [ gsl.Symbol('foo', []), gsl.Symbol('bar', ['var']), ]), gsl.Version('VERSION_2', 'VERSION_1', [], [ gsl.Symbol('baz', []), ]), gsl.Version('VERSION_3', 'VERSION_1', [], [ gsl.Symbol('qux', ['versioned=14']), ]), ] generator.write(versions) expected_src = textwrap.dedent("""\ void foo() {} int bar = 0; void baz() {} void qux() {} """) self.assertEqual(expected_src, src_file.getvalue()) expected_version = textwrap.dedent("""\ VERSION_1 { global: foo; bar; }; VERSION_2 { global: baz; } VERSION_1; """) self.assertEqual(expected_version, version_file.getvalue())