@@ -31,7 +31,9 @@ fn test_boolean_type_metatable() -> Result<()> {
3131
3232 let mt = lua. create_table ( ) ?;
3333 mt. set ( "__add" , Function :: wrap ( |a, b| Ok ( a || b) ) ) ?;
34- lua. set_type_metatable :: < bool > ( Some ( mt) ) ;
34+ assert_eq ! ( lua. type_metatable:: <bool >( ) , None ) ;
35+ lua. set_type_metatable :: < bool > ( Some ( mt. clone ( ) ) ) ;
36+ assert_eq ! ( lua. type_metatable:: <bool >( ) . unwrap( ) , mt) ;
3537
3638 lua. load ( r#"assert(true + true == true)"# ) . exec ( ) . unwrap ( ) ;
3739 lua. load ( r#"assert(true + false == true)"# ) . exec ( ) . unwrap ( ) ;
@@ -52,7 +54,8 @@ fn test_lightuserdata_type_metatable() -> Result<()> {
5254 Ok ( LightUserData ( ( a. 0 as usize + b. 0 as usize ) as * mut c_void ) )
5355 } ) ,
5456 ) ?;
55- lua. set_type_metatable :: < LightUserData > ( Some ( mt) ) ;
57+ lua. set_type_metatable :: < LightUserData > ( Some ( mt. clone ( ) ) ) ;
58+ assert_eq ! ( lua. type_metatable:: <LightUserData >( ) . unwrap( ) , mt) ;
5659
5760 let res = lua
5861 . load (
@@ -77,7 +80,9 @@ fn test_number_type_metatable() -> Result<()> {
7780
7881 let mt = lua. create_table ( ) ?;
7982 mt. set ( "__call" , Function :: wrap ( |n1 : f64 , n2 : f64 | Ok ( n1 * n2) ) ) ?;
80- lua. set_type_metatable :: < Number > ( Some ( mt) ) ;
83+ lua. set_type_metatable :: < Number > ( Some ( mt. clone ( ) ) ) ;
84+ assert_eq ! ( lua. type_metatable:: <Number >( ) . unwrap( ) , mt) ;
85+ 8186 lua. load ( r#"assert((1.5)(3.0) == 4.5)"# ) . exec ( ) . unwrap ( ) ;
8287 lua. load ( r#"assert((5)(5) == 25)"# ) . exec ( ) . unwrap ( ) ;
8388
@@ -93,7 +98,8 @@ fn test_string_type_metatable() -> Result<()> {
9398 "__add" ,
9499 Function :: wrap ( |a : String , b : String | Ok ( format ! ( "{a}{b}" ) ) ) ,
95100 ) ?;
96- lua. set_type_metatable :: < LuaString > ( Some ( mt) ) ;
101+ lua. set_type_metatable :: < LuaString > ( Some ( mt. clone ( ) ) ) ;
102+ assert_eq ! ( lua. type_metatable:: <LuaString >( ) . unwrap( ) , mt) ;
97103
98104 lua. load ( r#"assert(("foo" + "bar") == "foobar")"# ) . exec ( ) . unwrap ( ) ;
99105
@@ -109,7 +115,8 @@ fn test_function_type_metatable() -> Result<()> {
109115 "__index" ,
110116 Function :: wrap ( |_: Function , key : String | Ok ( format ! ( "function.{key}" ) ) ) ,
111117 ) ?;
112- lua. set_type_metatable :: < Function > ( Some ( mt) ) ;
118+ lua. set_type_metatable :: < Function > ( Some ( mt. clone ( ) ) ) ;
119+ assert_eq ! ( lua. type_metatable:: <Function >( ) , Some ( mt) ) ;
113120
114121 lua. load ( r#"assert((function() end).foo == "function.foo")"# )
115122 . exec ( )
@@ -127,7 +134,8 @@ fn test_thread_type_metatable() -> Result<()> {
127134 "__index" ,
128135 Function :: wrap ( |_: Thread , key : String | Ok ( format ! ( "thread.{key}" ) ) ) ,
129136 ) ?;
130- lua. set_type_metatable :: < Thread > ( Some ( mt) ) ;
137+ lua. set_type_metatable :: < Thread > ( Some ( mt. clone ( ) ) ) ;
138+ assert_eq ! ( lua. type_metatable:: <Thread >( ) , Some ( mt) ) ;
131139
132140 lua. load ( r#"assert((coroutine.create(function() end)).foo == "thread.foo")"# )
133141 . exec ( )
0 commit comments