private static void AssertTable(ISymbolTable table, string name, int version, IReadOnlyList <string> symbols)
        {
            Assert.IsTrue(table.IsShared);
            Assert.IsFalse(table.IsSystem);
            Assert.IsNull(table.GetSystemTable());
            Assert.IsTrue(table.IsReadOnly);
            Assert.AreEqual(name, table.Name);
            Assert.AreEqual(version, table.Version);
            Assert.AreEqual(0, table.GetImportedMaxId());
            Assert.AreEqual(symbols.Count, table.MaxId);

            var foundSymbols = new HashSet <string>();

            using (var iter = table.GetDeclaredSymbolNames().GetEnumerator())
            {
                for (var i = 0; i < symbols.Count; i++)
                {
                    var sid  = i + 1;
                    var text = symbols[i];

                    Assert.IsTrue(iter.MoveNext());
                    Assert.AreEqual(text, iter.Current);

                    var duplicate = text != null && !foundSymbols.Add(text);
                    SymTabUtils.AssertSymbolInTable(text, sid, duplicate, table);
                }

                Assert.IsFalse(iter.MoveNext());
            }
        }
Exemple #2
0
        public void WriteSymbolWithSymbolTableOutOfRange()
        {
            var datagram = SymTabUtils.DatagramWithOutOfRangeSymbolsInSymbolTable();

            var memStream    = new MemoryStream();
            var binaryWriter = IonBinaryWriterBuilder.Build(memStream);

            // Should throw exception as sid 12 in datagram exceeds the max ID of the symbol table currently in scope
            datagram.WriteTo(binaryWriter);
            binaryWriter.Finish();
        }
        public void WriteSymbolWithSymbolTableOutOfRange()
        {
            var datagram = SymTabUtils.DatagramWithOutOfRangeSymbolsInSymbolTable();

            var sw         = new StringWriter();
            var textWriter = IonTextWriterBuilder.Build(sw);

            // Should throw exception as sid 12 in datagram exceeds the max ID of the symbol table currently in scope
            datagram.WriteTo(textWriter);
            textWriter.Finish();
        }