Skip to content

Commit b88f21f

Browse files
committed
Move webapi_gen inline tests into wbtest files
1 parent c4c4822 commit b88f21f

16 files changed

Lines changed: 916 additions & 924 deletions

webapi_gen/emit/callback_emitter.mbt

Lines changed: 0 additions & 243 deletions
Original file line numberDiff line numberDiff line change
@@ -44,246 +44,3 @@ pub impl Emitter for CallbackEmitter with emit(
4444
]
4545
(filename, emits)
4646
}
47-
48-
///|
49-
test "emit_callback simple EventListener" {
50-
let idl =
51-
#|callback EventListener = undefined (Event event);
52-
let definitions = @parser.parse(idl)
53-
let registry = @type_registry.TypeRegistry::new(definitions)
54-
let flattened = @partial_merged.merge_partials(definitions)
55-
|> @flattened_idl.flatten(ignore)
56-
let callback_emitter = CallbackEmitter::{
57-
idl: flattened,
58-
type_registry: registry,
59-
}
60-
let (_filename, emits) = callback_emitter.emit("EventListener")
61-
let multi = mbt_code_gen_multi(emits)
62-
inspect(
63-
multi.shared,
64-
content=(
65-
#|// Do not edit. This file is generated.
66-
#|// MoonBit type: EventListener
67-
#|
68-
#|
69-
#|/// [EventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventListener)
70-
#|#external
71-
#|pub type EventListener
72-
#|
73-
#|pub impl TJsValue for EventListener with to_js(self: EventListener) -> JsValue = "%identity"
74-
#|
75-
#|pub impl FromJsAny for EventListener with from_js_any(value : JsAny) -> EventListener = "%identity"
76-
#|
77-
#|pub fn EventListener::new(callback : (Event) -> Unit) -> EventListener { event_listener_ffi(callback) }
78-
),
79-
)
80-
inspect(
81-
multi.js_ffi,
82-
content=(
83-
#|extern "js" fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "(callback) => callback"
84-
),
85-
)
86-
inspect(
87-
multi.wasm_ffi,
88-
content=(
89-
#|fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "webapi_EventListener" "new"
90-
),
91-
)
92-
}
93-
94-
///|
95-
test "emit_callback keeps interface argument as concrete callback type" {
96-
let idl =
97-
#|interface Event {};
98-
#|callback EventListener = undefined (Event event);
99-
let definitions = @parser.parse(idl)
100-
let registry = @type_registry.TypeRegistry::new(definitions)
101-
let flattened = @partial_merged.merge_partials(definitions)
102-
|> @flattened_idl.flatten(ignore)
103-
let callback_emitter = CallbackEmitter::{
104-
idl: flattened,
105-
type_registry: registry,
106-
}
107-
let (_filename, emits) = callback_emitter.emit("EventListener")
108-
let multi = mbt_code_gen_multi(emits)
109-
inspect(
110-
multi.shared,
111-
content=(
112-
#|// Do not edit. This file is generated.
113-
#|// MoonBit type: EventListener
114-
#|
115-
#|
116-
#|/// [EventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventListener)
117-
#|#external
118-
#|pub type EventListener
119-
#|
120-
#|pub impl TJsValue for EventListener with to_js(self: EventListener) -> JsValue = "%identity"
121-
#|
122-
#|pub impl FromJsAny for EventListener with from_js_any(value : JsAny) -> EventListener = "%identity"
123-
#|
124-
#|pub fn EventListener::new(callback : (Event) -> Unit) -> EventListener { event_listener_ffi(callback) }
125-
),
126-
)
127-
inspect(
128-
multi.js_ffi,
129-
content=(
130-
#|extern "js" fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "(callback) => callback"
131-
),
132-
)
133-
inspect(
134-
multi.wasm_ffi,
135-
content=(
136-
#|fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "webapi_EventListener" "new"
137-
),
138-
)
139-
}
140-
141-
///|
142-
test "emit_callback multi-arg MutationCallback" {
143-
let idl =
144-
#|callback MutationCallback = undefined (sequence<MutationRecord> mutations, MutationObserver observer);
145-
let definitions = @parser.parse(idl)
146-
let registry = @type_registry.TypeRegistry::new(definitions)
147-
let flattened = @partial_merged.merge_partials(definitions)
148-
|> @flattened_idl.flatten(ignore)
149-
let callback_emitter = CallbackEmitter::{
150-
idl: flattened,
151-
type_registry: registry,
152-
}
153-
let (_filename, emits) = callback_emitter.emit("MutationCallback")
154-
let multi = mbt_code_gen_multi(emits)
155-
inspect(
156-
multi.shared,
157-
content=(
158-
#|// Do not edit. This file is generated.
159-
#|// MoonBit type: MutationCallback
160-
#|
161-
#|
162-
#|/// [MutationCallback](https://developer.mozilla.org/en-US/docs/Web/API/MutationCallback)
163-
#|#external
164-
#|pub type MutationCallback
165-
#|
166-
#|pub impl TJsValue for MutationCallback with to_js(self: MutationCallback) -> JsValue = "%identity"
167-
#|
168-
#|pub impl FromJsAny for MutationCallback with from_js_any(value : JsAny) -> MutationCallback = "%identity"
169-
#|
170-
#|pub fn MutationCallback::new(callback : (Array[MutationRecord], MutationObserver) -> Unit) -> MutationCallback { mutation_callback_ffi(callback) }
171-
),
172-
)
173-
inspect(
174-
multi.js_ffi,
175-
content=(
176-
#|extern "js" fn mutation_callback_ffi(callback : (Array[MutationRecord], MutationObserver) -> Unit) -> MutationCallback = "(callback) => callback"
177-
),
178-
)
179-
inspect(
180-
multi.wasm_ffi,
181-
content=(
182-
#|fn mutation_callback_ffi_raw(callback : (JsArray, MutationObserver) -> Unit) -> MutationCallback = "webapi_MutationCallback" "new"
183-
#|
184-
#|///|
185-
#|fn mutation_callback_ffi(callback : (Array[MutationRecord], MutationObserver) -> Unit) -> MutationCallback {
186-
#| mutation_callback_ffi_raw(
187-
#| fn(mutations : JsArray, observer : MutationObserver) -> Unit {
188-
#| callback(mutations.to_array(), observer)
189-
#| },
190-
#| )
191-
#|}
192-
),
193-
)
194-
}
195-
196-
///|
197-
test "CallbackEmitter multi-target separates FFI" {
198-
let idl =
199-
#|callback EventListener = undefined (Event event);
200-
let definitions = @parser.parse(idl)
201-
let registry = @type_registry.TypeRegistry::new(definitions)
202-
let flattened = @partial_merged.merge_partials(definitions)
203-
|> @flattened_idl.flatten(ignore)
204-
let callback_emitter = CallbackEmitter::{
205-
idl: flattened,
206-
type_registry: registry,
207-
}
208-
let (_filename, emits) = callback_emitter.emit("EventListener")
209-
let multi = mbt_code_gen_multi(emits)
210-
inspect(
211-
multi.shared,
212-
content=(
213-
#|// Do not edit. This file is generated.
214-
#|// MoonBit type: EventListener
215-
#|
216-
#|
217-
#|/// [EventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventListener)
218-
#|#external
219-
#|pub type EventListener
220-
#|
221-
#|pub impl TJsValue for EventListener with to_js(self: EventListener) -> JsValue = "%identity"
222-
#|
223-
#|pub impl FromJsAny for EventListener with from_js_any(value : JsAny) -> EventListener = "%identity"
224-
#|
225-
#|pub fn EventListener::new(callback : (Event) -> Unit) -> EventListener { event_listener_ffi(callback) }
226-
),
227-
)
228-
inspect(
229-
multi.js_ffi,
230-
content=(
231-
#|extern "js" fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "(callback) => callback"
232-
),
233-
)
234-
inspect(
235-
multi.wasm_ffi,
236-
content=(
237-
#|fn event_listener_ffi(callback : (Event) -> Unit) -> EventListener = "webapi_EventListener" "new"
238-
),
239-
)
240-
}
241-
242-
///|
243-
test "CallbackEmitter wasm always uses direct import" {
244-
let idl =
245-
#|enum NotificationPermission { "default", "denied", "granted" };
246-
#|callback NotificationPermissionCallback = undefined (NotificationPermission permission);
247-
let definitions = @parser.parse(idl)
248-
let registry = @type_registry.TypeRegistry::new(definitions)
249-
let flattened = @partial_merged.merge_partials(definitions)
250-
|> @flattened_idl.flatten(ignore)
251-
let callback_emitter = CallbackEmitter::{
252-
idl: flattened,
253-
type_registry: registry,
254-
}
255-
let (_filename, emits) = callback_emitter.emit(
256-
"NotificationPermissionCallback",
257-
)
258-
let multi = mbt_code_gen_multi(emits)
259-
inspect(
260-
multi.shared,
261-
content=(
262-
#|// Do not edit. This file is generated.
263-
#|// MoonBit type: NotificationPermissionCallback
264-
#|
265-
#|
266-
#|/// [NotificationPermissionCallback](https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback)
267-
#|#external
268-
#|pub type NotificationPermissionCallback
269-
#|
270-
#|pub impl TJsValue for NotificationPermissionCallback with to_js(self: NotificationPermissionCallback) -> JsValue = "%identity"
271-
#|
272-
#|pub impl FromJsAny for NotificationPermissionCallback with from_js_any(value : JsAny) -> NotificationPermissionCallback = "%identity"
273-
#|
274-
#|pub fn NotificationPermissionCallback::new(callback : (NotificationPermission) -> Unit) -> NotificationPermissionCallback { notification_permission_callback_ffi(callback) }
275-
),
276-
)
277-
inspect(
278-
multi.js_ffi,
279-
content=(
280-
#|extern "js" fn notification_permission_callback_ffi(callback : (NotificationPermission) -> Unit) -> NotificationPermissionCallback = "(callback) => callback"
281-
),
282-
)
283-
inspect(
284-
multi.wasm_ffi,
285-
content=(
286-
#|fn notification_permission_callback_ffi(callback : (NotificationPermission) -> Unit) -> NotificationPermissionCallback = "webapi_NotificationPermissionCallback" "new"
287-
),
288-
)
289-
}

0 commit comments

Comments
 (0)