Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ executable app
Main.hs
build-depends:
base < 5,
containers >= 0.7
containers >= 0.7,
jsaddle,
jsaddle-wasm
hs-source-dirs:
app
default-language:
Expand Down
12 changes: 12 additions & 0 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
-----------------------------------------------------------------------------
module Main where
-----------------------------------------------------------------------------
import Language.Javascript.JSaddle
import Language.Javascript.JSaddle.Wasm
-----------------------------------------------------------------------------
#ifdef WASM
foreign export javascript "add" add :: Int -> Int -> Int
foreign export javascript "sub" sub :: Int -> Int -> Int
foreign export javascript "domAppend" domAppend :: IO ()
foreign export javascript "jsaddleAppend" jsaddleAppend :: IO ()
#endif
-----------------------------------------------------------------------------
add :: Int -> Int -> Int
Expand All @@ -24,3 +28,11 @@ foreign import javascript
document.body.appendChild(document.createElement('div'));
""" domAppend :: IO ()
-----------------------------------------------------------------------------
jsaddleAppend :: IO ()
jsaddleAppend = run $ do
doc <- jsg "document"
body <- jsg "document" ! "body"
ele <- doc # "createElement" $ [ "div" ]
body # "appendChild" $ [ ele ]
pure ()
-----------------------------------------------------------------------------
11 changes: 10 additions & 1 deletion index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
document.body.innerHTML = '';
});

const { add, sub, domAppend } = await instance.exports;
const { add, sub, domAppend, jsaddleAppend } = await instance.exports;

/* tests */
describe('Should test arithmetic', () => {
Expand All @@ -32,11 +32,20 @@
});

describe('Should perform DOM operations', () => {

test('DOM append test', () => {
expect(document.body.childNodes.length).toEqual(0);
domAppend().then (() => {
expect(document.body.childNodes.length).toEqual(1);
});
});

test('DOM jsaddle append test', () => {
expect(document.body.childNodes.length).toEqual(0);
jsaddleAppend().then (() => {
expect(document.body.childNodes.length).toEqual(1);

Check failure on line 46 in index.spec.ts

View workflow job for this annotation

GitHub Actions / build

error: expect(received).toEqual(expected)

Expected: 1 Received: 0 at <anonymous> (/home/runner/work/bun-wasm/bun-wasm/index.spec.ts:46:49)
});
});

});

Loading