pub(crate) fn sdf_volume_source_path(args: &serde_json::Value) -> Option<String> {
args.get("fragment_shader")
.and_then(|v| v.as_str())
.filter(|s| !s.is_empty())
.map(str::to_string)
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json::json;
#[test]
fn sdf_source_path_is_the_one_declared_field() {
let args = json!({ "fragment_shader": "shaders/chrome_blob.slang" });
assert_eq!(
sdf_volume_source_path(&args).as_deref(),
Some("shaders/chrome_blob.slang")
);
assert_eq!(sdf_volume_source_path(&json!({})), None);
assert_eq!(
sdf_volume_source_path(&json!({"fragment_shader": ""})),
None
);
}
}