Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add test
Browse files Browse the repository at this point in the history
davidbrochart committed Jun 5, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent d8ac45c commit 91b2f56
Showing 4 changed files with 124 additions and 0 deletions.
3 changes: 3 additions & 0 deletions javascript/src/ycell.ts
Original file line number Diff line number Diff line change
@@ -753,6 +753,9 @@ export class YCodeCell
set outputs(v: Array<nbformat.IOutput>) {
this.setOutputs(v);
}
get youtputs(): Y.Array<any> {
return this._youtputs;
}

/**
* Execution, display, or stream outputs.
43 changes: 43 additions & 0 deletions tests/files/nb1.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4166c837-41c7-4ada-b86e-fd9a7720a409",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello,"
]
}
],
"source": [
"print(\"Hello,\", end=\"\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
25 changes: 25 additions & 0 deletions tests/test_pycrdt_yjs.py
Original file line number Diff line number Diff line change
@@ -74,6 +74,31 @@ async def test_ypy_yjs_0(yws_server, yjs_client):
assert ytest.source == nb


@pytest.mark.asyncio
@pytest.mark.parametrize("yjs_client", "1", indirect=True)
async def test_ypy_yjs_1(yws_server, yjs_client):
ydoc = Doc()
ynotebook = YNotebook(ydoc)
async with connect("ws://localhost:1234/my-roomname") as websocket, WebsocketProvider(
ydoc, websocket
):
nb = stringify_source(json.loads((files_dir / "nb1.ipynb").read_text()))
ynotebook.source = nb
output_text = ynotebook.ycells[0]["outputs"][0]["text"]
assert output_text.to_py() == ["Hello,"]
event = Event()

def callback(_event):
event.set()

output_text.observe(callback)

with move_on_after(20):
await event.wait()

assert output_text.to_py() == ["Hello,", " World!"]


def test_plotly_renderer():
"""This test checks in particular that the type cast is not breaking the data."""
ydoc = Doc()
53 changes: 53 additions & 0 deletions tests/yjs_client_1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/

import { YNotebook } from '@jupyter/ydoc'
import { WebsocketProvider } from 'y-websocket'
import ws from 'ws'

const notebook = new YNotebook()
const cells = notebook.ydoc.getArray('cells')

function append_text() {
const cell = notebook.getCell(0)
const youtput = cell.youtputs.get(0)
const text = youtput.get('text')
text.insert(1, [' World!'])
}

function callback2(event) {
if (event.transaction.local) {
return
}

const cell = notebook.getCell(0)
if (cell.youtputs.length > 0) {
setTimeout(append_text, 100)
}
}

function callback1(event) {
if (event.transaction.local) {
return
}

if (cells.length > 0) {
const cell = notebook.getCell(0)
if (cell.youtputs.length > 0) {
setTimeout(append_text, 100)
}
else {
cell.youtputs.observe(callback2)
}
}
}

cells.observe(callback1)

const wsProvider = new WebsocketProvider(
'ws://localhost:1234', 'my-roomname',
notebook.ydoc,
{ WebSocketPolyfill: ws }
)

0 comments on commit 91b2f56

Please sign in to comment.