Skip to content

Commit 0219972

Browse files
committed
fix clippy
1 parent 3d442e3 commit 0219972

File tree

1 file changed

+41
-51
lines changed

1 file changed

+41
-51
lines changed

dsc_lib/src/dscresources/dscresource.rs

Lines changed: 41 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,16 @@ pub fn get_well_known_properties() -> HashMap<String, Value> {
338338
}
339339

340340
#[must_use]
341+
/// Performs a comparison of two JSON Values if the expected is a strict subset of the actual
342+
///
343+
/// # Arguments
344+
///
345+
/// * `expected` - The expected value
346+
/// * `actual` - The actual value
347+
///
348+
/// # Returns
349+
///
350+
/// An array of top level properties that differ, if any
341351
pub fn get_diff(expected: &Value, actual: &Value) -> Vec<String> {
342352
let mut diff_properties: Vec<String> = Vec::new();
343353
if expected.is_null() {
@@ -373,34 +383,28 @@ pub fn get_diff(expected: &Value, actual: &Value) -> Vec<String> {
373383
continue;
374384
}
375385

376-
match actual.as_object() {
377-
Some(actual_object) => {
378-
if actual_object.contains_key(key) {
379-
if value.is_array() {
380-
if !actual[key].is_array() {
381-
info!("diff: {} is not an array", actual[key]);
386+
if let Some(actual_object) = actual.as_object() {
387+
if actual_object.contains_key(key) {
388+
if let Some(value_array) = value.as_array() {
389+
if let Some(actual_array) = actual[key].as_array() {
390+
if !is_same_array(value_array, actual_array) {
391+
info!("diff: arrays differ for {key}");
382392
diff_properties.push(key.to_string());
383393
}
384-
else {
385-
if !is_same_array(&value.as_array().unwrap(), &actual[key].as_array().unwrap()) {
386-
info!("diff: arrays differ for {key}");
387-
diff_properties.push(key.to_string());
388-
}
389-
}
390-
}
391-
else if value != &actual[key] {
394+
} else {
395+
info!("diff: {} is not an array", actual[key]);
392396
diff_properties.push(key.to_string());
393397
}
394-
}
395-
else {
396-
info!("diff: {key} missing");
398+
} else if value != &actual[key] {
397399
diff_properties.push(key.to_string());
398400
}
399-
},
400-
None => {
401-
info!("diff: {key} not object");
401+
} else {
402+
info!("diff: {key} missing");
402403
diff_properties.push(key.to_string());
403-
},
404+
}
405+
} else {
406+
info!("diff: {key} not object");
407+
diff_properties.push(key.to_string());
404408
}
405409
}
406410
}
@@ -417,7 +421,7 @@ fn is_same_array(expected: &Vec<Value>, actual: &Vec<Value>) -> bool {
417421
}
418422

419423
for item in expected {
420-
if !array_contains(&actual, &item) {
424+
if !array_contains(actual, item) {
421425
info!("diff: actual array missing expected element");
422426
return false;
423427
}
@@ -428,57 +432,43 @@ fn is_same_array(expected: &Vec<Value>, actual: &Vec<Value>) -> bool {
428432

429433
fn array_contains(array: &Vec<Value>, find: &Value) -> bool {
430434
for item in array {
431-
if find.is_boolean() && item.is_boolean() {
432-
if find.as_bool().unwrap() == item.as_bool().unwrap() {
433-
return true;
434-
}
435+
if find.is_boolean() && item.is_boolean() && find.as_bool().unwrap() == item.as_bool().unwrap() {
436+
return true;
435437
}
436438

437-
if find.is_f64() && item.is_f64() {
438-
if find.as_f64().unwrap() == item.as_f64().unwrap() {
439-
return true;
440-
}
439+
if find.is_f64() && item.is_f64() && (find.as_f64().unwrap() - item.as_f64().unwrap()).abs() < 0.1 {
440+
return true;
441441
}
442442

443-
if find.is_i64() && item.is_i64() {
444-
if find.as_i64().unwrap() == item.as_i64().unwrap() {
445-
return true;
446-
}
443+
if find.is_i64() && item.is_i64() && find.as_i64().unwrap() == item.as_i64().unwrap() {
444+
return true;
447445
}
448446

449447
if find.is_null() && item.is_null() {
450448
return true;
451449
}
452450

453-
if find.is_number() && item.is_number() {
454-
if find.as_number().unwrap() == item.as_number().unwrap() {
455-
return true;
456-
}
451+
if find.is_number() && item.is_number() && find.as_number().unwrap() == item.as_number().unwrap() {
452+
return true;
457453
}
458454

459-
if find.is_string() && item.is_string() {
460-
if find.as_str().unwrap() == item.as_str().unwrap() {
461-
return true;
462-
}
455+
if find.is_string() && item.is_string() && find.as_str().unwrap() == item.as_str().unwrap() {
456+
return true;
463457
}
464458

465-
if find.is_u64() && item.is_u64() {
466-
if find.as_u64().unwrap() == item.as_u64().unwrap() {
467-
return true;
468-
}
459+
if find.is_u64() && item.is_u64() && find.as_u64().unwrap() == item.as_u64().unwrap() {
460+
return true;
469461
}
470462

471463
if find.is_object() && item.is_object() {
472464
let obj_diff = get_diff(find, item);
473-
if obj_diff.len() == 0 {
465+
if obj_diff.is_empty() {
474466
return true;
475467
}
476468
}
477469

478-
if find.is_array() && item.is_array() {
479-
if array_contains(item.as_array().unwrap(), find) {
480-
return true;
481-
}
470+
if find.is_array() && item.is_array() && array_contains(item.as_array().unwrap(), find) {
471+
return true;
482472
}
483473
}
484474

0 commit comments

Comments
 (0)