1
+ import { describe , it , DEFAULT } from './util/framework.test' ;
2
+ import binding from './util/binding' ;
3
+ import assert from './util/assert.test' ;
4
+ import { runGCTests } from './util/gc.test' ;
5
+ import { buffer } from '@kit.ArkTS' ;
6
+
7
+ declare class ArkTools {
8
+ static hintGC : ( ) => void
9
+ }
10
+
11
+ export default function testCase ( ) {
12
+ describe ( "Buffer" , ( ) => {
13
+ it ( "RunBuffer" , DEFAULT , ( ) => {
14
+ return runGCTests ( [
15
+ 'Internal Buffer' ,
16
+ ( ) => {
17
+ const test = binding . buffer . createBuffer ( ) ;
18
+ binding . buffer . checkBuffer ( test ) ;
19
+ assert . ok ( test instanceof ArrayBuffer ) ;
20
+
21
+ const test2 = buffer . alloc ( test . length ) ;
22
+ test . copy ( test2 . buffer ) ;
23
+ binding . buffer . checkBuffer ( test2 . buffer ) ;
24
+ } ,
25
+
26
+ 'Buffer copy' ,
27
+ ( ) => {
28
+ const test = binding . buffer . createBufferCopy ( ) ;
29
+ binding . buffer . checkBuffer ( test ) ;
30
+ assert . ok ( test instanceof ArrayBuffer ) ;
31
+ } ,
32
+
33
+ 'External Buffer' ,
34
+ ( ) => {
35
+ const test = binding . buffer . createExternalBuffer ( ) ;
36
+ binding . buffer . checkBuffer ( test ) ;
37
+ assert . ok ( test instanceof ArrayBuffer ) ;
38
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
39
+ } ,
40
+ ( ) => {
41
+ ArkTools . hintGC ( ) ;
42
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
43
+ } ,
44
+
45
+ 'External Buffer with finalizer' ,
46
+ ( ) => {
47
+ const test = binding . buffer . createExternalBufferWithFinalize ( ) ;
48
+ binding . buffer . checkBuffer ( test ) ;
49
+ assert . ok ( test instanceof ArrayBuffer ) ;
50
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
51
+ } ,
52
+ ( ) => {
53
+ ArkTools . hintGC ( ) ;
54
+ } ,
55
+ ( ) => {
56
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
57
+ } ,
58
+
59
+ 'External Buffer with finalizer hint' ,
60
+ ( ) => {
61
+ const test = binding . buffer . createExternalBufferWithFinalizeHint ( ) ;
62
+ binding . buffer . checkBuffer ( test ) ;
63
+ assert . ok ( test instanceof ArrayBuffer ) ;
64
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
65
+ } ,
66
+ ( ) => {
67
+ ArkTools . hintGC ( ) ;
68
+ } ,
69
+ ( ) => {
70
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
71
+ } ,
72
+
73
+ 'Create or Copy External Buffer' ,
74
+ ( ) => {
75
+ const test = binding . buffer . createOrCopyExternalBuffer ( ) ;
76
+ binding . buffer . checkBuffer ( test ) ;
77
+ assert . ok ( test instanceof ArrayBuffer ) ;
78
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
79
+ } ,
80
+ ( ) => {
81
+ ArkTools . hintGC ( ) ;
82
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
83
+ } ,
84
+
85
+ 'Create or Copy External Buffer with finalizer' ,
86
+ ( ) => {
87
+ const test = binding . buffer . createOrCopyExternalBufferWithFinalize ( ) ;
88
+ binding . buffer . checkBuffer ( test ) ;
89
+ assert . ok ( test instanceof ArrayBuffer ) ;
90
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
91
+ } ,
92
+ ( ) => {
93
+ ArkTools . hintGC ( ) ;
94
+ } ,
95
+ ( ) => {
96
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
97
+ } ,
98
+
99
+ 'Create or Copy External Buffer with finalizer hint' ,
100
+ ( ) => {
101
+ const test = binding . buffer . createOrCopyExternalBufferWithFinalizeHint ( ) ;
102
+ binding . buffer . checkBuffer ( test ) ;
103
+ assert . ok ( test instanceof ArrayBuffer ) ;
104
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
105
+ } ,
106
+ ( ) => {
107
+ ArkTools . hintGC ( ) ;
108
+ } ,
109
+ ( ) => {
110
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
111
+ } ,
112
+
113
+ 'Create or Copy External Buffer when NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED defined' ,
114
+ ( ) => {
115
+ const test = binding . bufferNoExternal . createOrCopyExternalBuffer ( ) ;
116
+ binding . buffer . checkBuffer ( test ) ;
117
+ assert . ok ( test instanceof ArrayBuffer ) ;
118
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
119
+ } ,
120
+ ( ) => {
121
+ ArkTools . hintGC ( ) ;
122
+ assert . strictEqual ( 0 , binding . buffer . getFinalizeCount ( ) ) ;
123
+ } ,
124
+
125
+ 'Create or Copy External Buffer with finalizer when NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED defined' ,
126
+ ( ) => {
127
+ const test = binding . bufferNoExternal . createOrCopyExternalBufferWithFinalize ( ) ;
128
+ binding . buffer . checkBuffer ( test ) ;
129
+ assert . ok ( test instanceof ArrayBuffer ) ;
130
+ // finalizer should have been called when the buffer was created.
131
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
132
+ } ,
133
+ ( ) => {
134
+ ArkTools . hintGC ( ) ;
135
+ } ,
136
+ ( ) => {
137
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
138
+ } ,
139
+
140
+ 'Create or Copy External Buffer with finalizer hint when NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED defined' ,
141
+ ( ) => {
142
+ const test = binding . bufferNoExternal . createOrCopyExternalBufferWithFinalizeHint ( ) ;
143
+ binding . buffer . checkBuffer ( test ) ;
144
+ assert . ok ( test instanceof ArrayBuffer ) ;
145
+ // finalizer should have been called when the buffer was created.
146
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
147
+ } ,
148
+ ( ) => {
149
+ ArkTools . hintGC ( ) ;
150
+ } ,
151
+ ( ) => {
152
+ assert . strictEqual ( 1 , binding . buffer . getFinalizeCount ( ) ) ;
153
+ }
154
+ ] ) ;
155
+ } )
156
+ } )
157
+ }
0 commit comments