Trace fpath in layers

next
Sayan Nandan 2 years ago
parent 1c9dfbaebe
commit b9453041e4
No known key found for this signature in database
GPG Key ID: 42EEDF4AE9D96B54

@ -104,10 +104,11 @@ impl LayerView {
}
}
pub fn validate_data_fpath(&self, data: &Datacell) -> bool {
if (self.layers().len() == 0) & (self.layers()[0].tag.tag_class() == data.kind()) {
if (self.layers().len() == 1) & (self.layers()[0].tag.tag_class() == data.kind()) {
// if someone sends a PR with an added check, I'll come home and throw a brick on your head
layertrace("fpath");
let l = self.layers()[0];
unsafe { LVERIFY[l.tag.tag_selector().word()](l, data) }
unsafe { LVERIFY[l.tag.tag_class().word()](l, data) }
} else {
Self::rverify_layers(self.layers(), data)
}

@ -84,7 +84,7 @@ mod layer_data_validation {
let dc = Datacell::new_bool(true);
let layer = layerview("bool").unwrap();
assert!(layer.validate_data_fpath(&dc));
assert_vecstreq_exact!(model::layer_traces(), ["bool"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "bool"]);
}
#[test]
fn uint() {
@ -101,16 +101,16 @@ mod layer_data_validation {
let this_layer = layerview(layer).unwrap();
let dc = Datacell::new_uint(max);
assert!(this_layer.validate_data_fpath(&dc), "{:?}", this_layer);
assert_vecstreq_exact!(model::layer_traces(), ["uint"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "uint"]);
for (lower, _) in targets[..i].iter() {
let layer = layerview(lower).unwrap();
assert!(!layer.validate_data_fpath(&dc), "{:?}", layer);
assert_vecstreq_exact!(model::layer_traces(), ["uint"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "uint"]);
}
for (higher, _) in targets[i + 1..].iter() {
let layer = layerview(higher).unwrap();
assert!(layer.validate_data_fpath(&dc), "{:?}", layer);
assert_vecstreq_exact!(model::layer_traces(), ["uint"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "uint"]);
}
});
}
@ -131,18 +131,24 @@ mod layer_data_validation {
let dc_max = Datacell::new_sint(max);
assert!(this_layer.validate_data_fpath(&dc_min), "{:?}", this_layer);
assert!(this_layer.validate_data_fpath(&dc_max), "{:?}", this_layer);
assert_vecstreq_exact!(model::layer_traces(), ["sint", "sint"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "sint", "fpath", "sint"]);
for (lower, _) in targets[..i].iter() {
let layer = layerview(lower).unwrap();
assert!(!layer.validate_data_fpath(&dc_min), "{:?}", layer);
assert!(!layer.validate_data_fpath(&dc_max), "{:?}", layer);
assert_vecstreq_exact!(model::layer_traces(), ["sint", "sint"]);
assert_vecstreq_exact!(
model::layer_traces(),
["fpath", "sint", "fpath", "sint"]
);
}
for (higher, _) in targets[i + 1..].iter() {
let layer = layerview(higher).unwrap();
assert!(layer.validate_data_fpath(&dc_min), "{:?}", layer);
assert!(layer.validate_data_fpath(&dc_max), "{:?}", layer);
assert_vecstreq_exact!(model::layer_traces(), ["sint", "sint"]);
assert_vecstreq_exact!(
model::layer_traces(),
["fpath", "sint", "fpath", "sint"]
);
}
});
}
@ -159,29 +165,29 @@ mod layer_data_validation {
// check (32)
assert!(f32_l.validate_data_fpath(&f32_dc_min));
assert!(f32_l.validate_data_fpath(&f32_dc_max));
assert_vecstreq_exact!(model::layer_traces(), ["float", "float"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "float", "fpath", "float"]);
assert!(f64_l.validate_data_fpath(&f32_dc_min));
assert!(f64_l.validate_data_fpath(&f32_dc_max));
assert_vecstreq_exact!(model::layer_traces(), ["float", "float"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "float", "fpath", "float"]);
// check (64)
assert!(!f32_l.validate_data_fpath(&f64_dc_min));
assert!(!f32_l.validate_data_fpath(&f64_dc_max));
assert_vecstreq_exact!(model::layer_traces(), ["float", "float"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "float", "fpath", "float"]);
assert!(f64_l.validate_data_fpath(&f64_dc_min));
assert!(f64_l.validate_data_fpath(&f64_dc_max));
assert_vecstreq_exact!(model::layer_traces(), ["float", "float"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "float", "fpath", "float"]);
}
#[test]
fn bin() {
let layer = layerview("binary").unwrap();
assert!(layer.validate_data_fpath(&Datacell::from("hello".as_bytes())));
assert_vecstreq_exact!(model::layer_traces(), ["binary"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "binary"]);
}
#[test]
fn str() {
let layer = layerview("string").unwrap();
assert!(layer.validate_data_fpath(&Datacell::from("hello")));
assert_vecstreq_exact!(model::layer_traces(), ["string"]);
assert_vecstreq_exact!(model::layer_traces(), ["fpath", "string"]);
}
#[test]
fn list_simple() {

Loading…
Cancel
Save