@@ -67,6 +67,72 @@ public function testInstanceByKeyFailureUndefined()
67
67
ValidMultiton::instanceByKey ('DOOM ' );
68
68
}
69
69
70
+ public function testInstanceBy ()
71
+ {
72
+ $ this ->assertSame (array (), ValidMultiton::calls ());
73
+
74
+ $ foo = ValidMultiton::instanceBy ('key ' , 'FOO ' );
75
+ $ bar = ValidMultiton::instanceBy ('key ' , 'BAR ' );
76
+
77
+ $ this ->assertInstanceOf ('Eloquent\Enumeration\Test\Fixture\ValidMultiton ' , $ foo );
78
+ $ this ->assertInstanceOf ('Eloquent\Enumeration\Test\Fixture\ValidMultiton ' , $ bar );
79
+ $ this ->assertNotEquals ($ foo , $ bar );
80
+ $ this ->assertSame ($ foo , ValidMultiton::instanceByKey ('FOO ' ));
81
+ $ this ->assertSame ($ bar , ValidMultiton::instanceByKey ('BAR ' ));
82
+
83
+ $ this ->assertSame (array (
84
+ array (
85
+ 'Eloquent\Enumeration\Test\Fixture\ValidMultiton::initializeMultiton ' ,
86
+ array (),
87
+ ),
88
+ ), ValidMultiton::calls ());
89
+ }
90
+
91
+ public function testInstanceByFailureUndefined ()
92
+ {
93
+ $ this ->setExpectedException ('Eloquent\Enumeration\Exception\UndefinedInstanceException ' );
94
+ ValidMultiton::instanceBy ('key ' , 'DOOM ' );
95
+ }
96
+
97
+ public function testInstanceByPredicate ()
98
+ {
99
+ $ this ->assertSame (array (), ValidMultiton::calls ());
100
+
101
+ $ foo = ValidMultiton::instanceByPredicate (
102
+ function (ValidMultiton $ instance ) {
103
+ return $ instance ->key () === 'FOO ' ;
104
+ }
105
+ );
106
+ $ bar = ValidMultiton::instanceByPredicate (
107
+ function (ValidMultiton $ instance ) {
108
+ return $ instance ->key () === 'BAR ' ;
109
+ }
110
+ );
111
+
112
+ $ this ->assertInstanceOf ('Eloquent\Enumeration\Test\Fixture\ValidMultiton ' , $ foo );
113
+ $ this ->assertInstanceOf ('Eloquent\Enumeration\Test\Fixture\ValidMultiton ' , $ bar );
114
+ $ this ->assertNotEquals ($ foo , $ bar );
115
+ $ this ->assertSame ($ foo , ValidMultiton::instanceByKey ('FOO ' ));
116
+ $ this ->assertSame ($ bar , ValidMultiton::instanceByKey ('BAR ' ));
117
+
118
+ $ this ->assertSame (array (
119
+ array (
120
+ 'Eloquent\Enumeration\Test\Fixture\ValidMultiton::initializeMultiton ' ,
121
+ array (),
122
+ ),
123
+ ), ValidMultiton::calls ());
124
+ }
125
+
126
+ public function testInstanceByPredicateFailureUndefined ()
127
+ {
128
+ $ this ->setExpectedException ('Eloquent\Enumeration\Exception\UndefinedInstanceException ' );
129
+ ValidMultiton::instanceByPredicate (
130
+ function (ValidMultiton $ instance ) {
131
+ return false ;
132
+ }
133
+ );
134
+ }
135
+
70
136
public function testCallStatic ()
71
137
{
72
138
$ foo = ValidMultiton::FOO ();
0 commit comments