public void OneOf4Test() { string str; var item1 = OneOf <Case1, Case2, Case3, Case4> .Create(new Case1()); Assert.AreEqual("Case1", item1.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item1.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case1", str); var item2 = OneOf <Case1, Case2, Case3, Case4> .Create(new Case2()); Assert.AreEqual("Case2", item2.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item2.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case2", str); var item3 = OneOf <Case1, Case2, Case3, Case4> .Create(new Case3()); Assert.AreEqual("Case3", item3.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item3.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case3", str); var item4 = OneOf <Case1, Case2, Case3, Case4> .Create(new Case4()); Assert.AreEqual("Case4", item4.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item4.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case4", str); }
public void OneOf7Test() { string str; var item1 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case1()); Assert.AreEqual("Case1", item1.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item1.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case1", str); var item2 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case2()); Assert.AreEqual("Case2", item2.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item2.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case2", str); var item3 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case3()); Assert.AreEqual("Case3", item3.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item3.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case3", str); var item4 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case4()); Assert.AreEqual("Case4", item4.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item4.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case4", str); var item5 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case5()); Assert.AreEqual("Case5", item5.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item5.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case5", str); var item6 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case6()); Assert.AreEqual("Case6", item6.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item6.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case6", str); var item7 = OneOf <Case1, Case2, Case3, Case4, Case5, Case6, Case7> .Create(new Case7()); Assert.AreEqual("Case7", item7.GetValue(v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name, v => v.Name)); str = ""; item7.Do(v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name, v => str = v.Name); Assert.AreEqual("Case7", str); }