@@ -106,6 +106,63 @@ Classes('constructor properties', () => {
106
106
assert . equal ( output . val , 42 ) ;
107
107
} ) ;
108
108
109
+ Classes ( 'constructor properties :: class' , ( ) => {
110
+ class Test {
111
+ constructor ( num ) {
112
+ this . value = num ;
113
+ }
114
+ }
115
+
116
+ Test . prototype . val = 42 ;
117
+
118
+ const input = new Test ( 123 ) ;
119
+ const output = klona ( input ) ;
120
+
121
+ assert . deepEqual ( input , output ) ;
122
+ assert . deepEqual ( output . constructor , Test ) ;
123
+ assert . deepEqual ( output . __proto__ , { val : 42 } ) ;
124
+
125
+ assert . equal ( output . value , 123 ) ;
126
+ assert . equal ( output . val , 42 ) ;
127
+ } ) ;
128
+
129
+ Classes ( 'constructor properties :: defaults' , ( ) => {
130
+ class Test {
131
+ constructor ( num = 123 ) {
132
+ this . value = num ;
133
+ }
134
+ }
135
+
136
+ const input = new Test ( 456 ) ;
137
+ const output = klona ( input ) ;
138
+
139
+ assert . deepEqual ( input , output ) ;
140
+ assert . equal ( output . value , 456 ) ;
141
+ } ) ;
142
+
143
+ Classes ( 'accessors' , ( ) => {
144
+ class Test {
145
+ get val ( ) {
146
+ return 42 ;
147
+ }
148
+ }
149
+
150
+ const input = new Test ( ) ;
151
+ const output = klona ( input ) ;
152
+
153
+ assert . deepEqual ( input , output ) ;
154
+ assert . deepEqual ( output . constructor , Test ) ;
155
+ assert . deepEqual ( output . __proto__ , { } ) ;
156
+
157
+ assert . deepEqual (
158
+ // @ts -ignore
159
+ Object . getOwnPropertyDescriptor ( input . __proto__ , 'val' ) ,
160
+ Object . getOwnPropertyDescriptor ( output . __proto__ , 'val' ) ,
161
+ ) ;
162
+
163
+ assert . equal ( output . val , 42 ) ;
164
+ } )
165
+
109
166
Classes . run ( ) ;
110
167
111
168
// ---
0 commit comments