Exemplo n.º 1
0
        public void TestList()
        {
            IIonValue list = factory.NewEmptyList();

            list.Add(factory.NewString("Ion"));
            list.Add(factory.NewInt(123));
            value.SetField("value", list);
            var reader = IonReaderBuilder.Build(value);

            jsonWriter.WriteValues(reader);
            Assert.AreEqual("{\"value\":[\"Ion\",123]}", this.sw.ToString());
        }
Exemplo n.º 2
0
 private void BuildIonList(IIonValue list, IEnumerable instance)
 {
     foreach (var item in instance)
     {
         var       itemType = item.GetType();
         var       handler  = FieldHandlers.GetHandler(itemType);
         IIonValue listItem = handler.ConvertFrom(item);
         list.Add(listItem);
     }
 }
Exemplo n.º 3
0
        internal static void AddHashToLog(IIonValue hashLog, string method, byte[] hash)
        {
            var node = valueFactory.NewEmptySexp();

            node.AddTypeAnnotation(new SymbolToken(method, SymbolToken.UnknownSid));
            foreach (byte b in hash)
            {
                node.Add(valueFactory.NewInt(b & 0xFF));
            }

            hashLog.Add(node);
        }
Exemplo n.º 4
0
        private static IIonValue FilterHashLog(IIonValue actualHashLog, IIonValue expectedHashLog)
        {
            HashSet <string>        methodCalls = new HashSet <string>();
            IEnumerator <IIonValue> enumerator  = expectedHashLog.GetEnumerator();

            while (enumerator.MoveNext())
            {
                IIonValue v = enumerator.Current;
                foreach (SymbolToken annotation in v.GetTypeAnnotationSymbols())
                {
                    methodCalls.Add(annotation.Text);
                }
            }

            IValueFactory valueFactory = new ValueFactory();
            IIonValue     result       = valueFactory.NewEmptySexp();

            if (methodCalls.Count == 1 && methodCalls.Contains("final_digest"))
            {
                IIonValue finalDigest = actualHashLog.GetElementAt(actualHashLog.Count - 1);
                finalDigest.ClearAnnotations();
                finalDigest.AddTypeAnnotation("final_digest");
                result.Add(finalDigest);
            }
            else
            {
                enumerator = actualHashLog.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    IIonValue v          = enumerator.Current;
                    String    methodCall = v.GetTypeAnnotationSymbols().ElementAt(0).Text;
                    if (methodCalls.Contains(methodCall))
                    {
                        result.Add(v);
                    }
                }
            }

            return(result);
        }