Example #1
0
        public async Task WriteXmlTest()
        {
            var root = new XmlChaserNode {
                Caption = "Root Node", Probability = 1
            };

            root.Add(new XmlChaserNode {
                Caption = "Hello", Probability = 0.5
            });
            root.Add(new XmlChaserNode {
                Caption = "World", Probability = 0.45
            });

            var builder  = new StringBuilder();
            var settings = new XmlWriterSettings {
                Indent = true
            };
            var writer = XmlWriter.Create(builder, settings);

            root.WriteXml(writer);
            writer.Flush();

            var xml = builder.ToString();

            Debug.WriteLine(xml);

            var readerSettings = new XmlReaderSettings {
            };
            var stream         = new StringReader(xml);
            var reader         = XmlReader.Create(stream, readerSettings);

            var copyRoot = XmlChaserNode.ReadXml(reader);

            await CheckSameAsync(root, copyRoot);
        }
Example #2
0
        static IEnumerable <XmlChaserNode> CreateChildren(int cursor, int position, int depth, params string[][] phrases)
        {
            Debug.Assert(phrases.Length == 1);

            foreach (var phrase in phrases)
            {
                foreach (var word in phrase)
                {
                    var node = new XmlChaserNode
                    {
                        Caption     = word,
                        Probability = cursor < phrase.Length ? (word == phrase[cursor] ? 0.75 : 0.25 / phrase.Length) : 1.0 / phrase.Length
                    };

                    if (position < depth)
                    {
                        foreach (var child in CreateChildren(Array.IndexOf(phrase, node.Caption) + 1, position + 1, depth, phrases))
                        {
                            node.Add(child);
                        }
                    }

                    yield return(node);
                }
            }
        }
Example #3
0
        public static async Task <Api.IChaserQuery <Range1D> > CreateAsync(XmlReader reader, double minProbThreshold = 0.0)
        {
            var xmlRoot = await XmlChaserNode.ReadXmlAsync(reader);

            var sortedRoot = new AlphabeticChaserNode(xmlRoot, minProbThreshold);
            // ALAN TODO refactor, separate the two concepts here: (1) packing to initial coordinates from probabilities,
            // (2) movement of coordinates...
            var engine = new QueryEngine();
            var root   = new ChaserQueryNode <Range1D>(null, sortedRoot, Renormalize, new Range1D(0.0, 1.0));

            engine.SetRoot(root);
            return(engine);
        }
Example #4
0
        static XmlChaserNode CreateTree(int depth, params string[][] phrases)
        {
            var root = new XmlChaserNode
            {
                Caption     = "Root",
                Probability = 1
            };

            foreach (var node in CreateChildren(0, 0, depth, phrases))
            {
                root.Add(node);
            }

            return(root);
        }