Integration test: Check serial text

This commit is contained in:
Fabian 2020-12-31 19:14:29 -06:00
parent 7d48636dda
commit 70e637b31b

View file

@ -210,11 +210,13 @@ if(cluster.isMaster)
skip_if_disk_image_missing: true, skip_if_disk_image_missing: true,
cdrom: root_path + "/images/linux4.iso", cdrom: root_path + "/images/linux4.iso",
timeout: 200, timeout: 200,
// TODO: Check serial
expected_texts: [ expected_texts: [
"~%", "~%",
"Files send via emulator appear in", "Files send via emulator appear in",
], ],
expected_serial_text: [
"Files send via emulator appear in",
],
expect_mouse_registered: true, expect_mouse_registered: true,
}, },
{ {
@ -226,6 +228,9 @@ if(cluster.isMaster)
"~%", "~%",
"Files send via emulator appear in", "Files send via emulator appear in",
], ],
expected_serial_text: [
"Files send via emulator appear in",
],
expect_mouse_registered: true, expect_mouse_registered: true,
}, },
{ {
@ -241,6 +246,9 @@ if(cluster.isMaster)
"~%", "~%",
"Files send via emulator appear in", "Files send via emulator appear in",
], ],
expected_serial_text: [
"Files send via emulator appear in",
],
expect_mouse_registered: true, expect_mouse_registered: true,
}, },
{ {
@ -320,7 +328,6 @@ if(cluster.isMaster)
} }
], ],
}, },
// TODO: Check serial text
{ {
name: "Haiku", name: "Haiku",
skip_if_disk_image_missing: true, skip_if_disk_image_missing: true,
@ -561,6 +568,11 @@ function run_test(test, done)
test.expected_texts = []; test.expected_texts = [];
} }
if(!test.expected_serial_text)
{
test.expected_serial_text = [];
}
var emulator = new V86(settings); var emulator = new V86(settings);
var screen = new Uint8Array(SCREEN_WIDTH * 25); var screen = new Uint8Array(SCREEN_WIDTH * 25);
@ -569,6 +581,11 @@ function run_test(test, done)
return test.expected_texts.length === 0; return test.expected_texts.length === 0;
} }
function check_serial_test_done()
{
return test.expected_serial_text.length === 0;
}
var mouse_test_done = false; var mouse_test_done = false;
function check_mouse_test_done() function check_mouse_test_done()
{ {
@ -579,7 +596,7 @@ function run_test(test, done)
var size_test_done = false; var size_test_done = false;
function check_grapical_test_done() function check_grapical_test_done()
{ {
return !test.expect_graphical_mode || (graphical_test_done && (!test.expect_graphical_size || size_test_done)); return !test.expect_graphical_mode || (graphical_test_done && (!test.expect_graphical_size || size_test_done));
} }
var test_start = Date.now(); var test_start = Date.now();
@ -597,7 +614,10 @@ function run_test(test, done)
return; return;
} }
if(check_text_test_done() && check_mouse_test_done() && check_grapical_test_done()) if(check_text_test_done() &&
check_mouse_test_done() &&
check_grapical_test_done() &&
check_serial_test_done())
{ {
var end = Date.now(); var end = Date.now();
@ -703,6 +723,33 @@ function run_test(test, done)
} }
}); });
let serial_line = "";
emulator.add_listener("serial0-output-char", function(c)
{
if(c === "\n")
{
if(VERBOSE)
{
console.log("Serial:", serial_line);
}
if(test.expected_serial_text.length)
{
if(serial_line.includes(test.expected_serial_text[0]))
{
test.expected_serial_text.shift();
check_test_done();
}
}
serial_line = "";
}
else if(c >= " " && c <= "~")
{
serial_line += c;
}
});
test.actions && test.actions.forEach(function(action) test.actions && test.actions.forEach(function(action)
{ {
if(action.on_text) if(action.on_text)