Example #1
0
            public void Test()
            {
                var node = new ofRootNode();

                Assert.That(Effect, Is.EqualTo(0));
                Assert.That(Cleanup, Is.EqualTo(0));

                node.RenderElement(this);

                Assert.That(Effect, Is.EqualTo(1));
                Assert.That(Cleanup, Is.EqualTo(0));

                node.RenderElement(this);

                Assert.That(Effect, Is.EqualTo(2));
                Assert.That(Cleanup, Is.EqualTo(1));

                node.RenderElement(this);

                Assert.That(Effect, Is.EqualTo(3));
                Assert.That(Cleanup, Is.EqualTo(2));

                node.Dispose();

                Assert.That(Effect, Is.EqualTo(3));
                Assert.That(Cleanup, Is.EqualTo(3));
            }
Example #2
0
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(OneRendered, Is.True);
                Assert.That(TwoRendered, Is.False);

                OneRendered = false;
                DoAlt       = true;

                node.RenderElement(this);

                Assert.That(OneRendered, Is.False);
                Assert.That(TwoRendered, Is.True);

                TwoRendered = false;
                DoAlt       = false;

                node.RenderElement(this);

                Assert.That(OneRendered, Is.True);
                Assert.That(TwoRendered, Is.False);
            }
Example #3
0
        public void RenderIfDifferentProps()
        {
            var node = new ofRootNode {
                AlwaysInvalid = false
            };                                                   // we don't want optimization

            node.RenderElement(new RenderIfDifferentPropsElement("test1"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(1));

            node.RenderElement(new RenderIfDifferentPropsElement("test2"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(2));

            node.RenderElement(new RenderIfDifferentPropsElement("test2"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(2));

            node.RenderElement(new RenderIfDifferentPropsElement("test2"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(2));

            node.RenderElement(new RenderIfDifferentPropsElement("test1"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(3));

            node.RenderElement(new RenderIfDifferentPropsElement("test1"));

            Assert.That(RenderIfDifferentPropsElement.RenderCount, Is.EqualTo(3));
        }
Example #4
0
            public void Test()
            {
                using var node = new ofRootNode();

                State = 0;

                node.RenderElement(this);

                Assert.That(Rendered, Is.EqualTo(0));

                State = 1;

                node.RenderElement(this);

                Assert.That(Rendered, Is.EqualTo(1));

                State = 0;

                node.RenderElement(this);

                Assert.That(Rendered, Is.EqualTo(1));

                State = 2;

                node.RenderElement(this);

                Assert.That(Rendered, Is.EqualTo(2));
            }
        public void PartlyAmbiguousCtor()
        {
            var node = new ofRootNode();

            var context = new PartlyAmbiguousCtorElement.Context();

            // "my value" is unambiguously a string
            node.RenderElement(new ofContext <PartlyAmbiguousCtorElement.Context>(value: context)
            {
                new ofYamlComponent(key: 1, document: @"
render:
  PartlyAmbiguousCtorElement:
    value: my value")
            });

            Assert.That(context.TheType, Is.EqualTo(PartlyAmbiguousCtorElement.Type.String));

            // "765" can be parsed as string OR integer, so it is ambiguous
            Assert.That(() => node.RenderElement(new ofContext <PartlyAmbiguousCtorElement.Context>(value: context)
            {
                new ofYamlComponent(key: 2, document: @"
render:
  PartlyAmbiguousCtorElement:
    value: 765")
            }), Throws.InstanceOf <YamlComponentException>());
        }
Example #6
0
        public void EmptyRenderMapping()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent("render: {}"));

            node.Diagnostics.EnsureRendered(typeof(ofYamlComponent));
        }
        public void PrivateCtor()
        {
            var node = new ofRootNode();

            Assert.That(() => node.RenderElement(new ofYamlComponent(@"
render:
  PrivateCtorElement:")), Throws.InstanceOf <YamlComponentException>());
        }
Example #8
0
        public void AbstractElement()
        {
            var node = new ofRootNode();

            Assert.That(() => node.RenderElement(new ofYamlComponent(@"
render:
  Element:")), Throws.InstanceOf <YamlComponentException>()); // ofElement is abstract
        }
Example #9
0
        public void NoRender()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(""));

            node.Diagnostics.EnsureRendered(typeof(ofYamlComponent));
        }
Example #10
0
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(Rendered, Is.True);
            }
Example #11
0
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(RenderCount, Is.EqualTo(11));
            }
Example #12
0
        public void MismatchingBind()
        {
            var node = new ofRootNode();

            node.RenderElement(new ElementTypeA());

            Assert.That(node.RenderElement(new ElementTypeB()), Is.EqualTo(RenderResult.Mismatch));
        }
Example #13
0
        public void BadLowercaseName()
        {
            var node = new ofRootNode();

            Assert.That(() => node.RenderElement(new ofYamlComponent(@"
render:
  fragment:")), Throws.InstanceOf <YamlComponentException>()); // fragment should be titlecased
        }
Example #14
0
        public void Complex()
        {
            var node = new ofRootNode();

            Assert.That(MountCounting.Mount, Is.EqualTo(0));
            Assert.That(MountCounting.Unmount, Is.EqualTo(0));

            node.RenderElement(new[]
            {
                new MountCounting("first"),
                new MountCounting("second"),
                new MountCounting("third")
            });

            Assert.That(MountCounting.Mount, Is.EqualTo(3));
            Assert.That(MountCounting.Unmount, Is.EqualTo(0));

            node.RenderElement(new[]
            {
                new MountCounting("first"),
                new MountCounting("third")
            });

            Assert.That(MountCounting.Mount, Is.EqualTo(3));
            Assert.That(MountCounting.Unmount, Is.EqualTo(1));

            node.RenderElement(new[]
            {
                new MountCounting("third"),
                new MountCounting("first")
            });

            Assert.That(MountCounting.Mount, Is.EqualTo(3));
            Assert.That(MountCounting.Unmount, Is.EqualTo(1));

            node.RenderElement(new[]
            {
                new MountCounting("third"),
                new MountCounting("second"),
                new MountCounting("first")
            });

            Assert.That(MountCounting.Mount, Is.EqualTo(4));
            Assert.That(MountCounting.Unmount, Is.EqualTo(1));

            node.RenderElement(new[]
            {
                new MountCounting("first")
            });

            Assert.That(MountCounting.Mount, Is.EqualTo(4));
            Assert.That(MountCounting.Unmount, Is.EqualTo(3));

            node.Dispose();

            Assert.That(MountCounting.Mount, Is.EqualTo(4));
            Assert.That(MountCounting.Unmount, Is.EqualTo(4));
        }
Example #15
0
            public void Test()
            {
                var node = new ofRootNode();

                node.RenderElement(this);

                Alt = true;

                Assert.That(() => node.RenderElement(this), Throws.InstanceOf <InvalidCastException>());
            }
Example #16
0
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(ParentRenders, Is.EqualTo(1));
                Assert.That(NestedRenders1, Is.EqualTo(11));
                Assert.That(NestedRenders2, Is.EqualTo(1));
            }
Example #17
0
        public void EmptyRenderListValues()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  -"));

            node.Diagnostics.EnsureRendered(typeof(ofYamlComponent));
        }
Example #18
0
        public void IgnoreNullChild()
        {
            using var node = new ofRootNode();

            node.RenderElement(new[]
            {
                new ofFragment(),
                null,
                new ofFragment()
            });
        }
Example #19
0
        public void FlattenedLists()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  - - - - - - Fragment:
  - Fragment:"));

            node.Diagnostics.EnsureRendered(typeof(ofYamlComponent), typeof(ofFragment), typeof(ofFragment), typeof(ofFragment));
        }
            public void Test()
            {
                var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(() => node.Diagnostics.EnsureRendered(
                                typeof(RenderedList),
                                typeof(ofFragment),
                                typeof(Nested2)), Throws.InstanceOf <ArgumentException>());
            }
Example #21
0
        public void EmptyFragment()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  Fragment:"));

            node.Diagnostics.EnsureRendered(
                typeof(ofYamlComponent),
                typeof(ofFragment));
        }
Example #22
0
        public void StringArrayProp()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  StringArrayPropElement:
    values:
      - value 1
      - value 2
      -"));
        }
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                node.Diagnostics.EnsureRendered(
                    typeof(RenderedList),
                    typeof(ofFragment),
                    typeof(Nested1),
                    typeof(Nested1.Nested3),
                    typeof(Nested2));
            }
Example #24
0
            public void Test()
            {
                var node = new ofRootNode();

                Assert.That(Disposed, Is.False);

                node.RenderElement(this);

                Assert.That(Disposed, Is.False);

                node.Dispose();

                Assert.That(Disposed, Is.True);
            }
Example #25
0
        public void ComplexNullableJaggedArrayProp()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  ComplexNullableJaggedArrayPropElement:
    values:
      - - - 1
          - 2
          - 3
        - - 4
          - 5
      - 6"));
        }
Example #26
0
        public void StringJaggedArrayProp()
        {
            using var node = new ofRootNode();

            node.RenderElement(new ofYamlComponent(@"
render:
  StringJaggedArrayPropElement:
    values:
      - - value 1 1
        - value 1 2
      - - value 2 1
        - value 2 2
        - value 2 3
      -"));
        }
Example #27
0
            public void Test()
            {
                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(1));
                Assert.That(Nested2Rendered, Is.EqualTo(1));

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(1));
                Assert.That(Nested2Rendered, Is.EqualTo(2));

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(1));
                Assert.That(Nested2Rendered, Is.EqualTo(3));

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(1));
                Assert.That(Nested2Rendered, Is.EqualTo(4));

                RemoveNested2 = true;

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(2));
                Assert.That(Nested2Rendered, Is.EqualTo(4));

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(2));
                Assert.That(Nested2Rendered, Is.EqualTo(4));

                RemoveNested2 = false;

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(3));
                Assert.That(Nested2Rendered, Is.EqualTo(5));

                node.RenderElement(this);

                Assert.That(Nested1Rendered, Is.EqualTo(3));
                Assert.That(Nested2Rendered, Is.EqualTo(6));
            }
Example #28
0
        public void NullableEnum()
        {
            using var node = new ofRootNode();

            var context = new NullableEnumPropElement.Context();

            node.RenderElement(new ofContext <NullableEnumPropElement.Context>(value: context)
            {
                new ofYamlComponent(@"
render:
  NullableEnumPropElement:
    nullableEnum: Item1")
            });

            Assert.That(context.Value, Is.EqualTo(NullableEnumPropElement.Enum.Item1));
        }
Example #29
0
        public void SkipIfSameProps()
        {
            var node = new ofRootNode {
                AlwaysInvalid = false
            };                                                   // we don't want optimization

            Assert.That(SkipIfSamePropsElement.Rendered, Is.EqualTo(0));

            node.RenderElement(new SkipIfSamePropsElement("test"));

            Assert.That(SkipIfSamePropsElement.Rendered, Is.EqualTo(1));

            node.RenderElement(new SkipIfSamePropsElement("test"));

            Assert.That(SkipIfSamePropsElement.Rendered, Is.EqualTo(1));
        }
Example #30
0
            public void Test()
            {
                Assert.That(CurrentCount, Is.EqualTo(0));
                Assert.That(CurrentString, Is.Null);

                using var node = new ofRootNode();

                node.RenderElement(this);

                Assert.That(CurrentCount, Is.EqualTo(1));
                Assert.That(CurrentString, Is.EqualTo("1"));

                node.RenderElement(this);

                Assert.That(CurrentCount, Is.EqualTo(2));
                Assert.That(CurrentString, Is.EqualTo("2"));
            }