public void ViewManagersPropertyCache_ShadowNode_Set() { var instance = new ShadowNodeValueTest(); var setters = ViewManagersPropertyCache.GetNativePropertySettersForShadowNodeType(typeof(ShadowNodeValueTest)); Assert.AreEqual(3, setters.Count); var props = new ReactStylesDiffMap(new JObject { { "Foo", 42 }, { "Qux1", "v2" }, { "Qux2", "v3" }, }); AssertEx.Throws <NotSupportedException>(() => setters["Foo"].UpdateViewManagerProperty(new ViewManagerValueTest(), null, props)); AssertEx.Throws <ArgumentNullException>( () => setters["Foo"].UpdateShadowNodeProperty(null, props), ex => Assert.AreEqual("shadowNode", ex.ParamName)); AssertEx.Throws <ArgumentNullException>( () => setters["Foo"].UpdateShadowNodeProperty(instance, null), ex => Assert.AreEqual("props", ex.ParamName)); setters["Foo"].UpdateShadowNodeProperty(instance, props); setters["Qux1"].UpdateShadowNodeProperty(instance, props); setters["Qux2"].UpdateShadowNodeProperty(instance, props); Assert.AreEqual(42, instance.FooValue); Assert.AreEqual("v2", instance.QuxValues[0]); Assert.AreEqual("v3", instance.QuxValues[1]); }
public void ViewManagersPropertyCache_ViewManager_Set() { var instance = new ViewManagerValueTest(); var setters = ViewManagersPropertyCache.GetNativePropertySettersForViewManagerType(typeof(ViewManagerValueTest)); Assert.AreEqual(3, setters.Count); var props = new ReactStylesDiffMap(new JObject { { "Foo", "v1" }, { "Bar1", "v2" }, { "Bar2", "v3" }, }); Assert.Throws <NotSupportedException>(() => setters["Foo"].UpdateShadowNodeProperty(new ShadowNodeValueTest(), props)); ArgumentNullException ex1 = Assert.Throws <ArgumentNullException>( () => setters["Foo"].UpdateViewManagerProperty(null, null, props)); Assert.AreEqual("viewManager", ex1.ParamName); ArgumentNullException ex2 = Assert.Throws <ArgumentNullException>( () => setters["Foo"].UpdateViewManagerProperty(instance, null, null)); Assert.AreEqual("props", ex2.ParamName); setters["Foo"].UpdateViewManagerProperty(instance, null, props); setters["Bar1"].UpdateViewManagerProperty(instance, null, props); setters["Bar2"].UpdateViewManagerProperty(instance, null, props); Assert.AreEqual("v1", instance.FooValue); Assert.AreEqual("v2", instance.BarValues[0]); Assert.AreEqual("v3", instance.BarValues[1]); }
public void ReactStylesDiffMap_ContainsKey() { var json = new JObject { { "foo", 42 }, }; var props = new ReactStylesDiffMap(json); Assert.IsTrue(props.ContainsKey("foo")); Assert.IsFalse(props.ContainsKey("FOO")); Assert.IsFalse(props.ContainsKey("bar")); }
public void PropertySetter_DefaultValue() { var methods = new[] { (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestBoolean(null, false)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestByte(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestSByte(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestInt16(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestUInt16(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestInt32(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestUInt32(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestInt64(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestUInt64(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestSingle(null, 0)), (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestDouble(null, 0)), }; var instance = new DefaultTest(); Assert.AreEqual(default(byte), instance.TestByteValue); Assert.AreEqual(default(sbyte), instance.TestSByteValue); Assert.AreEqual(default(short), instance.TestInt16Value); Assert.AreEqual(default(ushort), instance.TestUInt16Value); Assert.AreEqual(default(int), instance.TestInt32Value); Assert.AreEqual(default(uint), instance.TestUInt32Value); Assert.AreEqual(default(long), instance.TestInt64Value); Assert.AreEqual(default(ulong), instance.TestUInt64Value); Assert.AreEqual(default(float), instance.TestSingleValue); Assert.AreEqual(default(double), instance.TestDoubleValue); Assert.AreEqual(false, instance.TestBooleanValue); var emptyMap = new ReactStylesDiffMap(new JObject()); foreach (var method in methods) { var setter = PropertySetter.CreateViewManagerSetters(method).Single(); setter.UpdateViewManagerProperty(instance, null, emptyMap); } Assert.AreEqual(byte.MaxValue, instance.TestByteValue); Assert.AreEqual(sbyte.MaxValue, instance.TestSByteValue); Assert.AreEqual(short.MaxValue, instance.TestInt16Value); Assert.AreEqual(ushort.MaxValue, instance.TestUInt16Value); Assert.AreEqual(int.MaxValue, instance.TestInt32Value); Assert.AreEqual(uint.MaxValue, instance.TestUInt32Value); Assert.AreEqual(long.MaxValue, instance.TestInt64Value); Assert.AreEqual(ulong.MaxValue, instance.TestUInt64Value); Assert.AreEqual(float.MaxValue, instance.TestSingleValue); Assert.AreEqual(double.MaxValue, instance.TestDoubleValue); Assert.AreEqual(true, instance.TestBooleanValue); }
public void PropertySetter_DefaultValue_Undefined() { var method = (MethodInfo)ReflectionHelpers.InfoOf((DefaultTest t) => t.TestBoolean(null, false)); var instance = new DefaultTest(); Assert.AreEqual(false, instance.TestBooleanValue); var emptyMap = new ReactStylesDiffMap(new JObject { { "TestBoolean", JValue.CreateUndefined() }, }); var setter = PropertySetter.CreateViewManagerSetters(method).Single(); setter.UpdateViewManagerProperty(instance, null, emptyMap); Assert.AreEqual(true, instance.TestBooleanValue); }
public void ReactStylesDiffMap_Behavior() { var json = new JObject { { "foo", 42 }, { "bar", "qux" }, }; var props = new ReactStylesDiffMap(json); Assert.AreEqual(2, props.Keys.Count); Assert.IsTrue(new[] { "bar", "foo" }.SequenceEqual(props.Keys.OrderBy(k => k))); Assert.IsNotNull(props.GetProperty("foo")); Assert.IsNull(props.GetProperty("FOO")); Assert.AreEqual((short)42, props.GetProperty("foo").ToObject(typeof(short))); }
public PropsAnimatedNode(int tag, JObject config, NativeAnimatedNodesManager manager, UIImplementation uiImplementation) : base(tag) { var props = (JObject)config.GetValue("props", StringComparison.Ordinal); _propNodeMapping = new Dictionary <string, int>(props.Count); foreach (var entry in props) { _propNodeMapping.Add(entry.Key, entry.Value.Value <int>()); } _propMap = new JObject(); _diffMap = new ReactStylesDiffMap(_propMap); _manager = manager; _uiImplementation = uiImplementation; }
public void ViewManagersPropertyCache_Defaults() { var instance = new DefaultsTest(); var setters = ViewManagersPropertyCache.GetNativePropertySettersForViewManagerType(typeof(DefaultsTest)); var props = new ReactStylesDiffMap(new JObject()); instance.ByteValue = byte.MaxValue; instance.SByteValue = sbyte.MaxValue; instance.Int16Value = short.MaxValue; instance.UInt16Value = ushort.MaxValue; instance.Int32Value = int.MaxValue; instance.UInt32Value = uint.MaxValue; instance.Int64Value = long.MaxValue; instance.UInt64Value = ulong.MaxValue; instance.SingleValue = float.MaxValue; instance.DoubleValue = double.MaxValue; instance.DecimalValue = decimal.MaxValue; instance.BooleanValue = true; instance.StringValue = "foo"; instance.ArrayValue = new int[0]; instance.MapValue = new object(); instance.NullableValue = true; instance.GroupValue = new[] { "a", "b", "c" }; setters["TestByte"].UpdateViewManagerProperty(instance, null, props); setters["TestSByte"].UpdateViewManagerProperty(instance, null, props); setters["TestInt16"].UpdateViewManagerProperty(instance, null, props); setters["TestUInt16"].UpdateViewManagerProperty(instance, null, props); setters["TestInt32"].UpdateViewManagerProperty(instance, null, props); setters["TestUInt32"].UpdateViewManagerProperty(instance, null, props); setters["TestInt64"].UpdateViewManagerProperty(instance, null, props); setters["TestUInt64"].UpdateViewManagerProperty(instance, null, props); setters["TestSingle"].UpdateViewManagerProperty(instance, null, props); setters["TestDouble"].UpdateViewManagerProperty(instance, null, props); setters["TestDecimal"].UpdateViewManagerProperty(instance, null, props); setters["TestBoolean"].UpdateViewManagerProperty(instance, null, props); setters["TestString"].UpdateViewManagerProperty(instance, null, props); setters["TestArray"].UpdateViewManagerProperty(instance, null, props); setters["TestMap"].UpdateViewManagerProperty(instance, null, props); setters["TestNullable"].UpdateViewManagerProperty(instance, null, props); setters["foo"].UpdateViewManagerProperty(instance, null, props); setters["bar"].UpdateViewManagerProperty(instance, null, props); setters["baz"].UpdateViewManagerProperty(instance, null, props); Assert.AreEqual(0, instance.ByteValue); Assert.AreEqual(0, instance.SByteValue); Assert.AreEqual(0, instance.Int16Value); Assert.AreEqual(0, instance.UInt16Value); Assert.AreEqual(0, instance.Int32Value); Assert.AreEqual((uint)0, instance.UInt32Value); Assert.AreEqual(0, instance.Int64Value); Assert.AreEqual((ulong)0, instance.UInt64Value); Assert.AreEqual(0, instance.SingleValue); Assert.AreEqual(0, instance.DoubleValue); Assert.AreEqual(0, instance.DecimalValue); Assert.IsFalse(instance.BooleanValue); Assert.IsNull(instance.StringValue); Assert.IsNull(instance.ArrayValue); Assert.IsNull(instance.MapValue); Assert.IsFalse(instance.NullableValue.HasValue); Assert.IsNull(instance.GroupValue[0]); Assert.IsNull(instance.GroupValue[1]); Assert.IsNull(instance.GroupValue[2]); }
public virtual void UpdateProperties(DependencyObject viewToUpdate, ReactStylesDiffMap props) { throw new NotImplementedException(); }
public virtual void UpdateProperties(FrameworkElement viewToUpdate, ReactStylesDiffMap props) { throw new NotImplementedException(); }