Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 68fe112

Browse files
committed
Add ref accessor test
1 parent 8f99149 commit 68fe112

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

tests/ServiceStack.Text.Tests/UseCases/TypedAccessors_API_Examples.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,5 +177,28 @@ public void Can_use_TypedFields_accessor()
177177
var value = typeProps.GetPublicGetter("StringField")(instance);
178178
Assert.That(value, Is.EqualTo("foo"));
179179
}
180+
181+
[Test]
182+
public void Can_use_TypedFields_ValueType_Accessor()
183+
{
184+
var typeFields = TypeFields.Get(typeof((string s, int i)));
185+
186+
var oTuple = (object)("foo", 1);
187+
188+
typeFields.GetPublicSetterRef("Item1")(ref oTuple, "bar");
189+
typeFields.GetPublicSetterRef("Item2")(ref oTuple, 2);
190+
191+
var tuple = ((string s, int i))oTuple;
192+
Assert.That(tuple.s, Is.EqualTo("bar"));
193+
Assert.That(tuple.i, Is.EqualTo(2));
194+
195+
var item1Accessor = typeFields.GetAccessor("Item1");
196+
var item2Accessor = typeFields.GetAccessor("Item2");
197+
item1Accessor.PublicSetterRef(ref oTuple, "qux");
198+
item2Accessor.PublicSetterRef(ref oTuple, 3);
199+
200+
Assert.That(item1Accessor.PublicGetter(oTuple), Is.EqualTo("qux"));
201+
Assert.That(item2Accessor.PublicGetter(oTuple), Is.EqualTo(3));
202+
}
180203
}
181204
}

0 commit comments

Comments
 (0)