From f6bcb39c52be4d68c0fff9375d4127b31233abac Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 30 Sep 2022 19:53:41 +0200 Subject: [PATCH] Import data and check consistency --- brood/src/main.rs | 4 ++++ brood/src/test.rs | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 brood/src/test.rs diff --git a/brood/src/main.rs b/brood/src/main.rs index 310db54..ab78063 100644 --- a/brood/src/main.rs +++ b/brood/src/main.rs @@ -1,5 +1,6 @@ mod ingest; mod data; +mod test; use std::io; @@ -9,10 +10,13 @@ use clap::Parser; enum Command { /// Read sift data on stdin and output brood data on stdout. Ingest, + /// Test various things + Test, } fn main() -> io::Result<()> { match Command::parse() { Command::Ingest => ingest::ingest(), + Command::Test => test::test(), } } diff --git a/brood/src/test.rs b/brood/src/test.rs new file mode 100644 index 0000000..bdb46a1 --- /dev/null +++ b/brood/src/test.rs @@ -0,0 +1,18 @@ +use std::io::{self, BufReader}; + +use crate::data::AdjacencyList; + +pub fn test() -> io::Result<()> { + eprintln!("IMPORT"); + let data: AdjacencyList = ciborium::de::from_reader(BufReader::new(io::stdin())).unwrap(); + + eprintln!("CONSISTENCY CHECK"); + let range = 0..data.pages.len() as u32; + for link in &data.links { + if !range.contains(&link.to) { + eprintln!("Invalid link detected!"); + } + } + + Ok(()) +}