1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
//! ref: composer/tests/Composer/Test/Script/EventTest.php
use std::cell::RefCell;
use std::rc::Rc;
use indexmap::IndexMap;
use shirabe::composer::{ComposerHandle, PartialOrFullComposer};
use shirabe::config::Config;
use shirabe::event_dispatcher::Event as BaseEvent;
use shirabe::io::IOInterface;
use shirabe::io::null_io::NullIO;
use shirabe::package::{RootPackageHandle, RootPackageInterfaceHandle};
use shirabe::script::Event;
fn create_composer_instance() -> ComposerHandle {
let composer =
ComposerHandle::from_rc_unchecked(Rc::new(RefCell::new(PartialOrFullComposer::new_full())));
let config = Rc::new(RefCell::new(Config::new(true, None)));
composer.borrow_mut().set_config(config);
let package: RootPackageInterfaceHandle = RootPackageHandle::new(
"foo".to_string(),
"1.0.0.0".to_string(),
"1.0.0".to_string(),
)
.into();
composer.borrow_mut().set_package(package);
composer
}
#[test]
#[ignore = "Event::calculate_originating_event (called by set_originating_event) is todo!()"]
fn test_event_sets_originating_event() {
let io: Rc<RefCell<dyn IOInterface>> = Rc::new(RefCell::new(NullIO::new()));
let composer = create_composer_instance();
let originating_event = BaseEvent::new("originatingEvent".to_string(), vec![], IndexMap::new());
let mut script_event = Event::new(
"test".to_string(),
composer.downgrade(),
io,
true,
vec![],
IndexMap::new(),
);
assert!(
script_event.get_originating_event().is_none(),
"originatingEvent is initialized as null"
);
script_event.set_originating_event(originating_event);
assert!(script_event.get_originating_event().is_some());
}
// In PHP, the intermediate originating event is itself a Script\Event, and
// getOriginatingEvent() recurses to return the upper-most event. Here
// set_originating_event takes a concrete event_dispatcher::Event, so a Script
// Event cannot be passed as the originating event (it is not polymorphic), and
// the test cannot be expressed faithfully.
#[test]
#[ignore = "set_originating_event takes a concrete event_dispatcher::Event; a Script Event cannot be passed as originating event, and calculate_originating_event is todo!()"]
fn test_event_calculates_nested_originating_event() {
todo!()
}
|