()
| 519 | } |
| 520 | #[test] |
| 521 | fn test_prf_output_value() { |
| 522 | let mut g = Prf::new(None).unwrap(); |
| 523 | let mut helper = |t: Type| -> Result<()> { |
| 524 | let v1 = g.output_value(15, t.clone())?; |
| 525 | let v2 = g.output_value(15, t.clone())?; |
| 526 | assert!(v1.check_type(t.clone())?); |
| 527 | assert!(v2.check_type(t.clone())?); |
| 528 | assert_eq!(v1, v2); |
| 529 | if let Type::Tuple(_) | Type::Vector(_, _) | Type::NamedTuple(_) = t.clone() { |
| 530 | let values = v1.to_vector()?; |
| 531 | // check that not all values are equal |
| 532 | let mut all_equal = true; |
| 533 | for i in 1..values.len() { |
| 534 | all_equal &= values[i - 1] == values[i]; |
| 535 | } |
| 536 | assert!(!all_equal); |
| 537 | |
| 538 | // checks that all scalars contained in values are different |
| 539 | // this test passes with overwhelming probability only for UINT64 scalars |
| 540 | let mut numbers = vec![]; |
| 541 | let types = get_types_vector(t)?; |
| 542 | for i in 0..types.len() { |
| 543 | let tp = (*types[i]).clone(); |
| 544 | if !tp.is_array() { |
| 545 | return Ok(()); |
| 546 | } |
| 547 | if tp.get_scalar_type() != UINT64 { |
| 548 | return Ok(()); |
| 549 | } |
| 550 | let mut tmp = values[i].to_flattened_array_u64(tp)?; |
| 551 | numbers.append(&mut tmp) |
| 552 | } |
| 553 | let mut tmp_numbers = numbers.clone(); |
| 554 | tmp_numbers.sort_unstable(); |
| 555 | tmp_numbers.dedup(); |
| 556 | assert_eq!(tmp_numbers.len(), numbers.len()); |
| 557 | } |
| 558 | Ok(()) |
| 559 | }; |
| 560 | || -> Result<()> { |
| 561 | helper(scalar_type(BIT))?; |
| 562 | helper(scalar_type(UINT8))?; |
| 563 | helper(scalar_type(INT32))?; |
| 564 | helper(array_type(vec![3, 4], BIT))?; |
| 565 | helper(array_type(vec![4, 2], UINT8))?; |
| 566 | helper(array_type(vec![6, 2], INT32))?; |
| 567 | helper(tuple_type(vec![scalar_type(BIT), scalar_type(INT32)]))?; |
| 568 | helper(tuple_type(vec![ |
| 569 | vector_type(3, scalar_type(BIT)), |
| 570 | vector_type(5, scalar_type(BIT)), |
| 571 | scalar_type(BIT), |
| 572 | scalar_type(INT32), |
| 573 | ]))?; |
| 574 | helper(tuple_type(vec![ |
| 575 | scalar_type(INT32), |
| 576 | scalar_type(INT32), |
| 577 | scalar_type(INT32), |
| 578 | scalar_type(INT32), |
nothing calls this directly
no test coverage detected