cpclib_runner/runner/assembler/
mod.rs1pub mod rasm;
2pub mod sjasmplus;
3pub mod uz80;
4pub mod vasm;
5
6use cpclib_common::event::EventObserver;
7pub use rasm::{RASM_CMD, RasmVersion};
8pub use sjasmplus::{SJASMPLUS_CMD, SjasmplusVersion};
9use uz80::{UZ80_CMD, Uz80Version};
10pub use vasm::{VASM_CMD, VasmVersion};
11
12use crate::delegated::{
13 DelegateApplicationDescription, GithubCompilableApplication, InternetStaticCompiledApplication
14};
15
16#[derive(Clone, Debug, PartialEq, Eq, Hash)]
17pub enum ExternAssembler {
18 Rasm(RasmVersion),
19 Sjasmplus(SjasmplusVersion),
20 Uz80(Uz80Version),
21 Vasm(VasmVersion)
22}
23
24impl ExternAssembler {
25 pub fn get_command(&self) -> &str {
26 match self {
27 ExternAssembler::Rasm(_) => RASM_CMD,
28 ExternAssembler::Vasm(_) => VASM_CMD,
29 ExternAssembler::Uz80(_) => UZ80_CMD,
30 ExternAssembler::Sjasmplus(_) => SJASMPLUS_CMD
31 }
32 }
33
34 pub fn configuration<E: EventObserver>(&self) -> DelegateApplicationDescription<E> {
35 match self {
36 ExternAssembler::Rasm(r) => r.configuration(),
37 ExternAssembler::Sjasmplus(r) => r.configuration(),
38 ExternAssembler::Uz80(u) => u.configuration(),
39 ExternAssembler::Vasm(r) => r.configuration()
40 }
41 }
42}
43#[cfg(test)]
44mod test {
45 use super::RasmVersion;
46 use crate::delegated::{GithubInformation, StaticInformation, cpclib_download};
47 use crate::runner::assembler::{SjasmplusVersion, VasmVersion};
48
49 #[test]
50 fn test_download_rasm() {
51 let urls = RasmVersion::default().github_download_urls().unwrap();
52 assert!(cpclib_download(dbg!(&urls.linux.unwrap())).is_ok());
53 assert!(cpclib_download(dbg!(&urls.windows.unwrap())).is_ok());
54 }
55
56 #[test]
57 fn test_download_sjasmplus() {
58 let urls = SjasmplusVersion::default().github_download_urls().unwrap();
59 assert!(cpclib_download(dbg!(&urls.linux.unwrap())).is_ok());
60 assert!(cpclib_download(dbg!(&urls.windows.unwrap())).is_ok());
61 }
62
63 #[test]
64 fn test_download_vasm() {
65 let urls = VasmVersion::default().static_download_urls();
66 assert!(cpclib_download(dbg!(urls.linux.as_ref().unwrap())).is_ok());
67 assert!(cpclib_download(dbg!(urls.windows.as_ref().unwrap())).is_ok());
68 }
69}