@@ -13,67 +13,84 @@ namespace ReactNative.Tests.Bridge
13
13
[ TestClass ]
14
14
public class JavaScriptModuleRegistryTests
15
15
{
16
- [ TestMethod ]
17
- public void JavaScriptModuleRegistry_ArgumentChecks ( )
18
- {
19
- var reactInstance = new MockReactInstance ( ) ;
20
- var config = new JavaScriptModulesConfig . Builder ( ) . Build ( ) ;
21
-
22
- AssertEx . Throws < ArgumentNullException > (
23
- ( ) => new JavaScriptModuleRegistry ( null , config ) ,
24
- ex => Assert . AreEqual ( "reactInstance" , ex . ParamName ) ) ;
25
-
26
- AssertEx . Throws < ArgumentNullException > (
27
- ( ) => new JavaScriptModuleRegistry ( reactInstance , null ) ,
28
- ex => Assert . AreEqual ( "config" , ex . ParamName ) ) ;
29
- }
30
-
31
16
[ TestMethod ]
32
17
public void JavaScriptModuleRegistry_Invoke ( )
33
18
{
34
- var config = new JavaScriptModulesConfig . Builder ( )
19
+ var registry = new JavaScriptModuleRegistry . Builder ( )
35
20
. Add < RCTEventEmitter > ( )
36
21
. Add < AppRegistry > ( )
37
22
. Add < TestJavaScriptModule > ( )
38
23
. Build ( ) ;
39
24
40
25
var are = new AutoResetEvent ( false ) ;
41
- var moduleIds = new List < int > ( ) ;
42
- var methodIds = new List < int > ( ) ;
26
+ var modules = new List < string > ( ) ;
27
+ var methods = new List < string > ( ) ;
43
28
var argsList = new List < JArray > ( ) ;
44
- var reactInstance = new MockReactInstance ( ( moduleId , methodId , args , tracingName ) =>
29
+ var reactInstance = new MockReactInstance ( ( mod , met , args , tracingName ) =>
45
30
{
46
- moduleIds . Add ( moduleId ) ;
47
- methodIds . Add ( methodId ) ;
31
+ modules . Add ( mod ) ;
32
+ methods . Add ( met ) ;
48
33
argsList . Add ( args ) ;
49
34
are . Set ( ) ;
50
35
} ) ;
51
36
52
- var registry = new JavaScriptModuleRegistry ( reactInstance , config ) ;
53
- var module = registry . GetJavaScriptModule < TestJavaScriptModule > ( ) ;
37
+ var module = registry . GetJavaScriptModule < TestJavaScriptModule > ( reactInstance ) ;
54
38
55
39
module . Foo ( 42 ) ;
56
40
57
41
are . WaitOne ( ) ;
58
42
59
- Assert . AreEqual ( 1 , moduleIds . Count ) ;
60
- Assert . AreEqual ( 1 , methodIds . Count ) ;
61
- Assert . AreEqual ( 1 , moduleIds . Count ) ;
43
+ Assert . AreEqual ( 1 , modules . Count ) ;
44
+ Assert . AreEqual ( 1 , methods . Count ) ;
45
+ Assert . AreEqual ( 1 , modules . Count ) ;
62
46
63
- Assert . AreEqual ( 2 , moduleIds [ 0 ] ) ;
64
- Assert . AreEqual ( 2 , methodIds [ 0 ] ) ;
47
+ Assert . AreEqual ( "TestJavaScriptModule" , modules [ 0 ] ) ;
48
+ Assert . AreEqual ( "Foo" , methods [ 0 ] ) ;
65
49
Assert . AreEqual (
66
- JArray . FromObject ( new [ ] { 42 } ) . ToString ( Formatting . None ) ,
50
+ JArray . FromObject ( new [ ] { 42 } ) . ToString ( Formatting . None ) ,
67
51
argsList [ 0 ] . ToString ( Formatting . None ) ) ;
68
52
}
69
53
70
54
[ TestMethod ]
71
55
public void JavaScriptModuleRegistry_InvalidModule_Throws ( )
72
56
{
73
- var config = new JavaScriptModulesConfig . Builder ( ) . Build ( ) ;
57
+ var registry = new JavaScriptModuleRegistry . Builder ( ) . Build ( ) ;
74
58
var reactInstance = new MockReactInstance ( ) ;
75
- var registry = new JavaScriptModuleRegistry ( reactInstance , config ) ;
76
- AssertEx . Throws < InvalidOperationException > ( ( ) => registry . GetJavaScriptModule < TestJavaScriptModule > ( ) ) ;
59
+ AssertEx . Throws < InvalidOperationException > ( ( ) => registry . GetJavaScriptModule < TestJavaScriptModule > ( reactInstance ) ) ;
60
+ }
61
+
62
+ #if DEBUG
63
+ [ TestMethod ]
64
+ public void JavaScriptModuleRegistry_Validate ( )
65
+ {
66
+ var builder = new JavaScriptModuleRegistry . Builder ( ) ;
67
+
68
+ AssertEx . Throws < ArgumentException > (
69
+ ( ) => builder . Add ( typeof ( JavaScriptModuleBase ) ) ,
70
+ ex => Assert . AreEqual ( "type" , ex . ParamName ) ) ;
71
+
72
+ AssertEx . Throws < ArgumentException > (
73
+ ( ) => builder . Add ( typeof ( IDerivedJavaScriptModule ) ) ,
74
+ ex => Assert . AreEqual ( "type" , ex . ParamName ) ) ;
75
+
76
+ AssertEx . Throws < ArgumentException > (
77
+ ( ) => builder . Add ( typeof ( object ) ) ,
78
+ ex => Assert . AreEqual ( "type" , ex . ParamName ) ) ;
79
+
80
+ AssertEx . Throws < ArgumentException > (
81
+ ( ) => builder . Add ( typeof ( NoConstructorJavaScriptModule ) ) ,
82
+ ex => Assert . AreEqual ( "type" , ex . ParamName ) ) ;
83
+ }
84
+ #endif
85
+
86
+ public interface IDerivedJavaScriptModule : IJavaScriptModule
87
+ {
88
+
89
+ }
90
+
91
+ public class NoConstructorJavaScriptModule : JavaScriptModuleBase
92
+ {
93
+ private NoConstructorJavaScriptModule ( ) { }
77
94
}
78
95
79
96
class TestJavaScriptModule : JavaScriptModuleBase
0 commit comments