summaryrefslogtreecommitdiff
path: root/op_crates/web/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'op_crates/web/lib.rs')
-rw-r--r--op_crates/web/lib.rs102
1 files changed, 102 insertions, 0 deletions
diff --git a/op_crates/web/lib.rs b/op_crates/web/lib.rs
new file mode 100644
index 000000000..4cfe8d090
--- /dev/null
+++ b/op_crates/web/lib.rs
@@ -0,0 +1,102 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+
+use deno_core::crate_modules;
+use std::path::PathBuf;
+
+crate_modules!();
+
+pub struct WebScripts {
+ pub declaration: String,
+ pub dom_exception: String,
+ pub event: String,
+ pub text_encoding: String,
+}
+
+fn get_str_path(file_name: &str) -> String {
+ PathBuf::from(DENO_CRATE_PATH)
+ .join(file_name)
+ .to_string_lossy()
+ .to_string()
+}
+
+pub fn get_scripts() -> WebScripts {
+ WebScripts {
+ declaration: get_str_path("lib.deno_web.d.ts"),
+ dom_exception: get_str_path("00_dom_exception.js"),
+ event: get_str_path("01_event.js"),
+ text_encoding: get_str_path("08_text_encoding.js"),
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use deno_core::js_check;
+ use deno_core::CoreIsolate;
+ use deno_core::StartupData;
+ use futures::future::lazy;
+ use futures::future::FutureExt;
+ use futures::task::Context;
+ use futures::task::Poll;
+
+ fn run_in_task<F>(f: F)
+ where
+ F: FnOnce(&mut Context) + Send + 'static,
+ {
+ futures::executor::block_on(lazy(move |cx| f(cx)));
+ }
+
+ fn setup() -> CoreIsolate {
+ let mut isolate = CoreIsolate::new(StartupData::None, false);
+ js_check(
+ isolate
+ .execute("00_dom_exception.js", include_str!("00_dom_exception.js")),
+ );
+ js_check(isolate.execute("01_event.js", include_str!("01_event.js")));
+ js_check(
+ isolate
+ .execute("08_text_encoding.js", include_str!("08_text_encoding.js")),
+ );
+ isolate
+ }
+
+ #[test]
+ fn test_event() {
+ run_in_task(|mut cx| {
+ let mut isolate = setup();
+ js_check(isolate.execute("event_test.js", include_str!("event_test.js")));
+ if let Poll::Ready(Err(_)) = isolate.poll_unpin(&mut cx) {
+ unreachable!();
+ }
+ });
+ }
+
+ #[test]
+ fn test_event_target() {
+ run_in_task(|mut cx| {
+ let mut isolate = setup();
+ js_check(
+ isolate.execute(
+ "event_target_test.js",
+ include_str!("event_target_test.js"),
+ ),
+ );
+ if let Poll::Ready(Err(_)) = isolate.poll_unpin(&mut cx) {
+ unreachable!();
+ }
+ });
+ }
+
+ #[test]
+ fn test_text_encoding() {
+ run_in_task(|mut cx| {
+ let mut isolate = setup();
+ js_check(isolate.execute(
+ "text_encoding_test.js",
+ include_str!("text_encoding_test.js"),
+ ));
+ if let Poll::Ready(Err(_)) = isolate.poll_unpin(&mut cx) {
+ unreachable!();
+ }
+ });
+ }
+}