use json_ld::syntax::LangTagBuf; use acrate_astreams::activitystreams::jsonld::LangTriple; macro_rules! test_example { ($modname:ident, $filename:literal) => { mod $modname { use json_ld::syntax::Parse; use json_ld::Expand; pub const DATA: &'static str = include_str!($filename); pub fn parse() -> json_ld::syntax::Value { let (value, _codemap) = json_ld::syntax::Value::parse_str(DATA) .expect("Failed to parse example"); value } pub fn document() -> json_ld::RemoteDocument { let document = json_ld::RemoteDocument::new( None, None, parse(), ); document } pub async fn expand() -> json_ld::ExpandedDocument { let mut loader = json_ld::ReqwestLoader::new(); let doc = document(); let expanded = doc.expand(&mut loader) .await .expect("Failed to expand JSON-LD document"); expanded } #[tokio::test] async fn test_expand() { let doc = expand().await; println!("{doc:#?}"); } } } } test_example!(e001, "./activitystreams/examples/1.json"); test_example!(e002, "./activitystreams/examples/2.json"); test_example!(e003, "./activitystreams/examples/3.json"); test_example!(e004, "./activitystreams/examples/4.json"); test_example!(e005, "./activitystreams/examples/5.json"); test_example!(e006, "./activitystreams/examples/6.json"); test_example!(e007, "./activitystreams/examples/7.json"); test_example!(e008, "./activitystreams/examples/8.json"); test_example!(e009, "./activitystreams/examples/9.json"); test_example!(e010, "./activitystreams/examples/10.json"); test_example!(e011, "./activitystreams/examples/11.json"); test_example!(e012, "./activitystreams/examples/12.json"); test_example!(e013, "./activitystreams/examples/13.json"); test_example!(e014, "./activitystreams/examples/14.json"); test_example!(e015, "./activitystreams/examples/15.json"); test_example!(e016, "./activitystreams/examples/16.json"); test_example!(e017, "./activitystreams/examples/17.json"); test_example!(e018, "./activitystreams/examples/18.json"); test_example!(e019, "./activitystreams/examples/19.json"); test_example!(e020, "./activitystreams/examples/20.json"); test_example!(e021, "./activitystreams/examples/21.json"); test_example!(e022, "./activitystreams/examples/22.json"); test_example!(e023, "./activitystreams/examples/23.json"); test_example!(e024, "./activitystreams/examples/24.json"); test_example!(e025, "./activitystreams/examples/25.json"); test_example!(e026, "./activitystreams/examples/26.json"); test_example!(e027, "./activitystreams/examples/27.json"); test_example!(e028, "./activitystreams/examples/28.json"); test_example!(e029, "./activitystreams/examples/29.json"); test_example!(e030, "./activitystreams/examples/30.json"); test_example!(e031, "./activitystreams/examples/31.json"); test_example!(e032, "./activitystreams/examples/32.json"); test_example!(e033, "./activitystreams/examples/33.json"); test_example!(e034, "./activitystreams/examples/34.json"); test_example!(e035, "./activitystreams/examples/35.json"); test_example!(e036, "./activitystreams/examples/36.json"); test_example!(e037, "./activitystreams/examples/37.json"); test_example!(e038, "./activitystreams/examples/38.json"); test_example!(e039, "./activitystreams/examples/39.json"); test_example!(e040, "./activitystreams/examples/40.json"); test_example!(e041, "./activitystreams/examples/41.json"); test_example!(e042, "./activitystreams/examples/42.json"); test_example!(e043, "./activitystreams/examples/43.json"); test_example!(e044, "./activitystreams/examples/44.json"); test_example!(e045, "./activitystreams/examples/45.json"); test_example!(e046, "./activitystreams/examples/46.json"); test_example!(e047, "./activitystreams/examples/47.json"); test_example!(e048, "./activitystreams/examples/48.json"); test_example!(e049, "./activitystreams/examples/49.json"); test_example!(e050, "./activitystreams/examples/50.json"); test_example!(e051, "./activitystreams/examples/51.json"); test_example!(e052, "./activitystreams/examples/52.json"); test_example!(e053, "./activitystreams/examples/53.json"); test_example!(e054, "./activitystreams/examples/54.json"); test_example!(e055, "./activitystreams/examples/55.json"); test_example!(e056, "./activitystreams/examples/56.json"); test_example!(e057, "./activitystreams/examples/57.json"); test_example!(e058, "./activitystreams/examples/58.json"); test_example!(e059, "./activitystreams/examples/59.json"); test_example!(e060, "./activitystreams/examples/60.json"); test_example!(e061, "./activitystreams/examples/61.json"); test_example!(e062, "./activitystreams/examples/62.json"); test_example!(e063, "./activitystreams/examples/63.json"); test_example!(e064, "./activitystreams/examples/64.json"); test_example!(e065, "./activitystreams/examples/65.json"); test_example!(e066, "./activitystreams/examples/66.json"); test_example!(e067, "./activitystreams/examples/67.json"); test_example!(e068, "./activitystreams/examples/68.json"); test_example!(e069, "./activitystreams/examples/69.json"); test_example!(e070, "./activitystreams/examples/70.json"); test_example!(e071, "./activitystreams/examples/71.json"); test_example!(e072, "./activitystreams/examples/72.json"); test_example!(e073, "./activitystreams/examples/73.json"); test_example!(e074, "./activitystreams/examples/74.json"); test_example!(e075, "./activitystreams/examples/75.json"); test_example!(e076, "./activitystreams/examples/76.json"); test_example!(e077, "./activitystreams/examples/77.json"); test_example!(e078, "./activitystreams/examples/78.json"); test_example!(e079, "./activitystreams/examples/79.json"); test_example!(e080, "./activitystreams/examples/80.json"); test_example!(e081, "./activitystreams/examples/81.json"); test_example!(e082, "./activitystreams/examples/82.json"); test_example!(e083, "./activitystreams/examples/83.json"); test_example!(e084, "./activitystreams/examples/84.json"); test_example!(e085, "./activitystreams/examples/85.json"); test_example!(e086, "./activitystreams/examples/86.json"); test_example!(e087, "./activitystreams/examples/87.json"); test_example!(e088, "./activitystreams/examples/88.json"); test_example!(e089, "./activitystreams/examples/89.json"); test_example!(e090, "./activitystreams/examples/90.json"); test_example!(e091, "./activitystreams/examples/91.json"); test_example!(e092, "./activitystreams/examples/92.json"); test_example!(e093, "./activitystreams/examples/93.json"); test_example!(e094, "./activitystreams/examples/94.json"); test_example!(e095, "./activitystreams/examples/95.json"); test_example!(e096, "./activitystreams/examples/96.json"); test_example!(e097, "./activitystreams/examples/97.json"); test_example!(e098, "./activitystreams/examples/98.json"); test_example!(e099, "./activitystreams/examples/99.json"); test_example!(e100, "./activitystreams/examples/100.json"); test_example!(e101, "./activitystreams/examples/101.json"); test_example!(e102, "./activitystreams/examples/102.json"); test_example!(e103, "./activitystreams/examples/103.json"); test_example!(e104, "./activitystreams/examples/104.json"); test_example!(e105, "./activitystreams/examples/105.json"); test_example!(e106, "./activitystreams/examples/106.json"); test_example!(e107, "./activitystreams/examples/107.json"); test_example!(e108, "./activitystreams/examples/108.json"); test_example!(e109, "./activitystreams/examples/109.json"); test_example!(e110, "./activitystreams/examples/110.json"); test_example!(e111, "./activitystreams/examples/111.json"); test_example!(e112, "./activitystreams/examples/112.json"); test_example!(e113, "./activitystreams/examples/113.json"); test_example!(e114, "./activitystreams/examples/114.json"); test_example!(e115, "./activitystreams/examples/115.json"); test_example!(e116, "./activitystreams/examples/116.json"); test_example!(e117, "./activitystreams/examples/117.json"); test_example!(e118, "./activitystreams/examples/118.json"); test_example!(e119, "./activitystreams/examples/119.json"); test_example!(e120, "./activitystreams/examples/120.json"); test_example!(e121, "./activitystreams/examples/121.json"); test_example!(e122, "./activitystreams/examples/122.json"); test_example!(e123, "./activitystreams/examples/123.json"); test_example!(e124, "./activitystreams/examples/124.json"); test_example!(e125, "./activitystreams/examples/125.json"); test_example!(e126, "./activitystreams/examples/126.json"); test_example!(e127, "./activitystreams/examples/127.json"); test_example!(e128, "./activitystreams/examples/128.json"); test_example!(e129, "./activitystreams/examples/129.json"); test_example!(e130, "./activitystreams/examples/130.json"); test_example!(e131, "./activitystreams/examples/131.json"); test_example!(e132, "./activitystreams/examples/132.json"); test_example!(e133, "./activitystreams/examples/133.json"); test_example!(e134, "./activitystreams/examples/134.json"); test_example!(e135, "./activitystreams/examples/135.json"); test_example!(e136, "./activitystreams/examples/136.json"); test_example!(e137, "./activitystreams/examples/137.json"); test_example!(e138, "./activitystreams/examples/138.json"); test_example!(e139, "./activitystreams/examples/139.json"); test_example!(e140, "./activitystreams/examples/140.json"); test_example!(e141, "./activitystreams/examples/141.json"); test_example!(e142, "./activitystreams/examples/142.json"); test_example!(e143, "./activitystreams/examples/143.json"); test_example!(e144, "./activitystreams/examples/144.json"); test_example!(e145, "./activitystreams/examples/145.json"); test_example!(e146, "./activitystreams/examples/146.json"); test_example!(e147, "./activitystreams/examples/147.json"); test_example!(e148, "./activitystreams/examples/148.json"); test_example!(e149, "./activitystreams/examples/149.json"); test_example!(e150, "./activitystreams/examples/150.json"); test_example!(e151, "./activitystreams/examples/151.json"); test_example!(e152, "./activitystreams/examples/152.json"); test_example!(e153, "./activitystreams/examples/153.json"); test_example!(e154, "./activitystreams/examples/154.json"); test_example!(e155, "./activitystreams/examples/155.json"); test_example!(e156, "./activitystreams/examples/156.json"); test_example!(e157, "./activitystreams/examples/157.json"); test_example!(e158, "./activitystreams/examples/158.json"); test_example!(e159, "./activitystreams/examples/159.json"); #[tokio::test] async fn test_link_href() { let doc = e121::expand().await; let node = doc.main_node() .expect("Main node was not found"); let href = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_href() .expect("Property `href` was not found") .expect("Property `href` failed to process") }; assert_eq!(href, "http://example.org/abc"); } #[tokio::test] async fn test_link_rel() { let doc = e131::expand().await; let node = doc.main_node() .expect("Main node was not found"); let mut rels = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_rels_lenient() .map(|v| v .expect("Property `rel` failed to process") ) }; let rel = rels.next() .expect("Expected `rel` [0] to be present"); assert_eq!(rel, "canonical"); let rel = rels.next() .expect("Expected `rel` [1] to be present"); assert_eq!(rel, "preview"); } #[tokio::test] async fn test_link_media_type() { let doc = e126::expand().await; let node = doc.main_node() .expect("Main node was not found"); let mediatype = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_mediatype() .expect("Property `mediaType` was not found") .expect("Property `mediaType` failed to process") }; assert_eq!(mediatype, mediatype::media_type!(TEXT/HTML)); } #[tokio::test] async fn test_link_name_value() { let doc = e117::expand().await; let node = doc.main_node() .expect("Main node was not found"); let names: Vec = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_names() .map(|v| v .expect("Property `name` failed to process") ) .collect() }; let mut names = names.into_iter(); let (name, language, direction) = names.next().expect("Expected `name` [0] to be present"); assert_eq!(name, "A simple note"); assert_eq!(language, None); assert_eq!(direction, None); } #[tokio::test] async fn test_link_name_lang() { let doc = e118::expand().await; let node = doc.main_node() .expect("Main node was not found"); let names: Vec = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_names() .map(|v| v .expect("Property `name` failed to process") ) .collect() }; let mut names = names.into_iter(); let (name, language, direction) = names.next().expect("Expected `name` [0] to be present"); assert_eq!(name, "A simple note"); assert_eq!(language, Some(LangTagBuf::new("en".to_string()).unwrap())); assert_eq!(direction, None); let (name, language, direction) = names.next().expect("Expected `name` [1] to be present"); assert_eq!(name, "Una nota sencilla"); assert_eq!(language, Some(LangTagBuf::new("es".to_string()).unwrap())); assert_eq!(direction, None); let (name, language, direction) = names.next().expect("Expected `name` [2] to be present"); assert_eq!(name, "一段简单的笔记"); assert_eq!(language, Some(LangTagBuf::new("zh-Hans".to_string()).unwrap())); assert_eq!(direction, None); } #[tokio::test] async fn test_link_hreflang() { let doc = e122::expand().await; let node = doc.main_node() .expect("Main node was not found"); let hreflang = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_hreflang() .expect("Property `hreflang` was not found") .expect("Property `hreflang` failed to process") }; assert_eq!(hreflang, "en") } #[tokio::test] async fn test_link_height() { let doc = e120::expand().await; let node = doc.main_node() .expect("Main node was not found"); let height = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_width() .expect("Property `height` was not found") .expect("Property `height` failed to process") }; assert_eq!(height, 100u64) } #[tokio::test] async fn test_link_width() { let doc = e138::expand().await; let node = doc.main_node() .expect("Main node was not found"); let width = { use acrate_astreams::activitystreams::StreamsLink; node.activitystreams_width() .expect("Property `width` was not found") .expect("Property `width` failed to process") }; assert_eq!(width, 100u64) } #[tokio::test] async fn test_link_preview() { let doc = e102::expand().await; let node = doc.main_node() .expect("Main node was not found"); let previews: Vec = { use acrate_astreams::activitystreams::StreamsEntity; node.activitystreams_previews() .map(|v| v .expect("Property `preview` failed to process") ) .collect() }; let mut previews = previews.into_iter(); let _preview = previews.next().expect("Expected `preview` [0] to be present"); // TODO: More tests when StreamsObject is implemented }