tests: Move shared object tests to their own file
This commit is contained in:
parent
792d68d370
commit
dda8debadc
|
@ -2,10 +2,8 @@
|
|||
//!
|
||||
//! Trace output can be compared with correct output from the official Flash Player.
|
||||
|
||||
use ruffle_core::backend::storage::{MemoryStorageBackend, StorageBackend};
|
||||
|
||||
use crate::external_interface::tests::{external_interface_avm1, external_interface_avm2};
|
||||
use crate::util::runner::test_swf_with_hooks;
|
||||
use crate::shared_object::{shared_object_avm1, shared_object_avm2};
|
||||
use anyhow::Context;
|
||||
use anyhow::Result;
|
||||
use libtest_mimic::{Arguments, Trial};
|
||||
|
@ -13,6 +11,7 @@ use std::path::Path;
|
|||
use util::test::Test;
|
||||
|
||||
mod external_interface;
|
||||
mod shared_object;
|
||||
mod util;
|
||||
|
||||
const RUN_IMG_TESTS: bool = cfg!(feature = "imgtests");
|
||||
|
@ -24,112 +23,6 @@ fn set_logger() {
|
|||
.try_init();
|
||||
}
|
||||
|
||||
fn shared_object_avm1() -> Result<()> {
|
||||
set_logger();
|
||||
// Test SharedObject persistence. Run an SWF that saves data
|
||||
// to a shared object twice and verify that the data is saved.
|
||||
let mut memory_storage_backend: Box<dyn StorageBackend> =
|
||||
Box::<MemoryStorageBackend>::default();
|
||||
|
||||
// Initial run; no shared object data.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm1/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm1/shared_object/input1.json"),
|
||||
Path::new("tests/swfs/avm1/shared_object/output1.txt"),
|
||||
|_player| Ok(()),
|
||||
|player| {
|
||||
// Save the storage backend for next run.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
// Verify that the flash cookie matches the expected one
|
||||
let expected = std::fs::read("tests/swfs/avm1/shared_object/RuffleTest.sol")?;
|
||||
std::assert_eq!(
|
||||
expected,
|
||||
memory_storage_backend
|
||||
.get("localhost//RuffleTest")
|
||||
.unwrap_or_default()
|
||||
);
|
||||
|
||||
// Re-run the SWF, verifying that the shared object persists.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm1/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm1/shared_object/input2.json"),
|
||||
Path::new("tests/swfs/avm1/shared_object/output2.txt"),
|
||||
|player| {
|
||||
// Swap in the previous storage backend.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
|_player| Ok(()),
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn shared_object_avm2() -> Result<()> {
|
||||
set_logger();
|
||||
// Test SharedObject persistence. Run an SWF that saves data
|
||||
// to a shared object twice and verify that the data is saved.
|
||||
let mut memory_storage_backend: Box<dyn StorageBackend> =
|
||||
Box::<MemoryStorageBackend>::default();
|
||||
|
||||
// Initial run; no shared object data.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm2/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm2/shared_object/input1.json"),
|
||||
Path::new("tests/swfs/avm2/shared_object/output1.txt"),
|
||||
|_player| Ok(()),
|
||||
|player| {
|
||||
// Save the storage backend for next run.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
// Verify that the flash cookie matches the expected one
|
||||
let expected = std::fs::read("tests/swfs/avm2/shared_object/RuffleTest.sol")?;
|
||||
std::assert_eq!(
|
||||
expected,
|
||||
memory_storage_backend
|
||||
.get("localhost//RuffleTest")
|
||||
.unwrap_or_default()
|
||||
);
|
||||
|
||||
// Re-run the SWF, verifying that the shared object persists.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm2/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm2/shared_object/input2.json"),
|
||||
Path::new("tests/swfs/avm2/shared_object/output2.txt"),
|
||||
|player| {
|
||||
// Swap in the previous storage backend.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
|_player| Ok(()),
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args = Arguments::from_args();
|
||||
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
use crate::set_logger;
|
||||
use crate::util::runner::test_swf_with_hooks;
|
||||
use anyhow::Result;
|
||||
use ruffle_core::backend::storage::{MemoryStorageBackend, StorageBackend};
|
||||
use std::path::Path;
|
||||
|
||||
pub fn shared_object_avm1() -> Result<()> {
|
||||
set_logger();
|
||||
// Test SharedObject persistence. Run an SWF that saves data
|
||||
// to a shared object twice and verify that the data is saved.
|
||||
let mut memory_storage_backend: Box<dyn StorageBackend> =
|
||||
Box::<MemoryStorageBackend>::default();
|
||||
|
||||
// Initial run; no shared object data.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm1/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm1/shared_object/input1.json"),
|
||||
Path::new("tests/swfs/avm1/shared_object/output1.txt"),
|
||||
|_player| Ok(()),
|
||||
|player| {
|
||||
// Save the storage backend for next run.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
// Verify that the flash cookie matches the expected one
|
||||
let expected = std::fs::read("tests/swfs/avm1/shared_object/RuffleTest.sol")?;
|
||||
std::assert_eq!(
|
||||
expected,
|
||||
memory_storage_backend
|
||||
.get("localhost//RuffleTest")
|
||||
.unwrap_or_default()
|
||||
);
|
||||
|
||||
// Re-run the SWF, verifying that the shared object persists.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm1/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm1/shared_object/input2.json"),
|
||||
Path::new("tests/swfs/avm1/shared_object/output2.txt"),
|
||||
|player| {
|
||||
// Swap in the previous storage backend.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
|_player| Ok(()),
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn shared_object_avm2() -> Result<()> {
|
||||
set_logger();
|
||||
// Test SharedObject persistence. Run an SWF that saves data
|
||||
// to a shared object twice and verify that the data is saved.
|
||||
let mut memory_storage_backend: Box<dyn StorageBackend> =
|
||||
Box::<MemoryStorageBackend>::default();
|
||||
|
||||
// Initial run; no shared object data.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm2/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm2/shared_object/input1.json"),
|
||||
Path::new("tests/swfs/avm2/shared_object/output1.txt"),
|
||||
|_player| Ok(()),
|
||||
|player| {
|
||||
// Save the storage backend for next run.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
// Verify that the flash cookie matches the expected one
|
||||
let expected = std::fs::read("tests/swfs/avm2/shared_object/RuffleTest.sol")?;
|
||||
std::assert_eq!(
|
||||
expected,
|
||||
memory_storage_backend
|
||||
.get("localhost//RuffleTest")
|
||||
.unwrap_or_default()
|
||||
);
|
||||
|
||||
// Re-run the SWF, verifying that the shared object persists.
|
||||
test_swf_with_hooks(
|
||||
Path::new("tests/swfs/avm2/shared_object/test.swf"),
|
||||
1,
|
||||
Path::new("tests/swfs/avm2/shared_object/input2.json"),
|
||||
Path::new("tests/swfs/avm2/shared_object/output2.txt"),
|
||||
|player| {
|
||||
// Swap in the previous storage backend.
|
||||
let mut player = player.lock().unwrap();
|
||||
std::mem::swap(player.storage_mut(), &mut memory_storage_backend);
|
||||
Ok(())
|
||||
},
|
||||
|_player| Ok(()),
|
||||
false,
|
||||
false,
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue