예제 #1
0
        public void IsValid()
        {
            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload"));
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>("nonexist"));
            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload.single_int32"));
            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload.repeated_int32"));
            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload.single_nested_message"));
            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload.repeated_nested_message"));
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>("payload.nonexist"));

            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>(FieldMask.FromString("payload")));
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>(FieldMask.FromString("nonexist")));
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>(FieldMask.FromString("payload,nonexist")));

            Assert.IsTrue(FieldMask.IsValid(NestedTestAllTypes.Descriptor, "payload"));
            Assert.IsFalse(FieldMask.IsValid(NestedTestAllTypes.Descriptor, "nonexist"));

            Assert.IsTrue(FieldMask.IsValid(NestedTestAllTypes.Descriptor, FieldMask.FromString("payload")));
            Assert.IsFalse(FieldMask.IsValid(NestedTestAllTypes.Descriptor, FieldMask.FromString("nonexist")));

            Assert.IsTrue(FieldMask.IsValid <NestedTestAllTypes>("payload.single_nested_message.bb"));

            // Repeated fields cannot have sub-paths.
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>("payload.repeated_nested_message.bb"));

            // Non-message fields cannot have sub-paths.
            Assert.IsFalse(FieldMask.IsValid <NestedTestAllTypes>("payload.single_int32.bb"));
        }
예제 #2
0
        public void Merge()
        {
            // Only test a simple case here and expect
            // {@link FieldMaskTreeTest#Merge} to cover all scenarios.
            FieldMask          fieldMask = FieldMask.FromString("payload");
            NestedTestAllTypes source    = new NestedTestAllTypes
            {
                Payload = new TestAllTypes
                {
                    SingleInt32   = 1234,
                    SingleFixed64 = 4321
                }
            };
            NestedTestAllTypes destination = new NestedTestAllTypes();

            fieldMask.Merge(source, destination);
            Assert.AreEqual(1234, destination.Payload.SingleInt32);
            Assert.AreEqual(4321, destination.Payload.SingleFixed64);

            destination = new NestedTestAllTypes
            {
                Payload = new TestAllTypes
                {
                    SingleInt32 = 4321,
                    SingleInt64 = 5678
                }
            };
            fieldMask.Merge(source, destination);
            Assert.AreEqual(1234, destination.Payload.SingleInt32);
            Assert.AreEqual(5678, destination.Payload.SingleInt64);
            Assert.AreEqual(4321, destination.Payload.SingleFixed64);
        }
예제 #3
0
        public void FromString(string input, string[] expectedOutput)
        {
            FieldMask mask = FieldMask.FromString(input);

            Assert.AreEqual(expectedOutput.Length, mask.Paths.Count);
            for (int i = 0; i < expectedOutput.Length; i++)
            {
                Assert.AreEqual(expectedOutput[i], mask.Paths[i]);
            }
        }
예제 #4
0
        public void Union_UsingVarArgs()
        {
            FieldMask mask1  = FieldMask.FromString("foo");
            FieldMask mask2  = FieldMask.FromString("foo.bar,bar.quz");
            FieldMask mask3  = FieldMask.FromString("bar.quz");
            FieldMask mask4  = FieldMask.FromString("bar");
            FieldMask result = mask1.Union(mask2, mask3, mask4);

            Assert.AreEqual(2, result.Paths.Count);
            Assert.Contains("bar", result.Paths);
            Assert.Contains("foo", result.Paths);
            Assert.That(result.Paths, Has.No.Member("foo.bar"));
            Assert.That(result.Paths, Has.No.Member("bar.quz"));
        }
예제 #5
0
        public void Intersection()
        {
            // Only test a simple case here and expect
            // {@link FieldMaskTreeTest#IntersectFieldPath} to cover all scenarios.
            FieldMask mask1  = FieldMask.FromString("foo,bar.baz,bar.quz");
            FieldMask mask2  = FieldMask.FromString("foo.bar,bar");
            FieldMask result = mask1.Intersection(mask2);

            Assert.AreEqual(3, result.Paths.Count);
            Assert.Contains("foo.bar", result.Paths);
            Assert.Contains("bar.baz", result.Paths);
            Assert.Contains("bar.quz", result.Paths);
            Assert.That(result.Paths, Has.No.Member("foo"));
            Assert.That(result.Paths, Has.No.Member("bar"));
        }
예제 #6
0
 public void FromString_Validated()
 {
     // Check whether the field paths are valid if a class parameter is provided.
     Assert.DoesNotThrow(() => FieldMask.FromString <NestedTestAllTypes>(",payload"));
     Assert.Throws <InvalidProtocolBufferException>(() => FieldMask.FromString <NestedTestAllTypes>("payload,nonexist"));
 }