@@ -6,13 +6,16 @@ use std::error::Error;
66use std:: fmt;
77use std:: fmt:: { Debug , Display , Formatter } ;
88
9- use vortex_array:: ArrayRef ;
9+ use vortex_array:: compute :: MinMaxResult ;
1010use vortex_array:: search_sorted:: { SearchResult , SearchSortedSide } ;
11+ use vortex_array:: { Array , ArrayRef } ;
1112use vortex_error:: VortexError ;
1213use vortex_scalar:: Scalar ;
1314
1415#[ non_exhaustive]
1516pub enum VortexFuzzError {
17+ ScalarMismatch ( Scalar , Scalar , usize , Backtrace ) ,
18+
1619 SearchSortedError (
1720 Scalar ,
1821 SearchResult ,
@@ -23,8 +26,12 @@ pub enum VortexFuzzError {
2326 Backtrace ,
2427 ) ,
2528
29+ MinMaxMismatch ( Option < MinMaxResult > , Option < MinMaxResult > , usize , Backtrace ) ,
30+
2631 ArrayNotEqual ( Scalar , Scalar , usize , ArrayRef , ArrayRef , usize , Backtrace ) ,
2732
33+ DTypeMismatch ( ArrayRef , ArrayRef , usize , Backtrace ) ,
34+
2835 LengthMismatch ( usize , usize , ArrayRef , ArrayRef , usize , Backtrace ) ,
2936
3037 VortexError ( VortexError , Backtrace ) ,
@@ -39,6 +46,12 @@ impl Debug for VortexFuzzError {
3946impl Display for VortexFuzzError {
4047 fn fmt ( & self , f : & mut Formatter < ' _ > ) -> fmt:: Result {
4148 match self {
49+ VortexFuzzError :: ScalarMismatch ( lhs, rhs, step, backtrace) => {
50+ write ! (
51+ f,
52+ "Scalar mismatch: expected {lhs}, got {rhs} in step {step}\n Backtrace:\n {backtrace}"
53+ )
54+ }
4255 VortexFuzzError :: SearchSortedError (
4356 a,
4457 expected,
@@ -54,6 +67,12 @@ impl Display for VortexFuzzError {
5467 array. display_tree( ) ,
5568 )
5669 }
70+ VortexFuzzError :: MinMaxMismatch ( lhs, rhs, step, backtrace) => {
71+ write ! (
72+ f,
73+ "MinMax mismatch: expected {lhs:?} got {rhs:?} in step {step}\n Backtrace:\n {backtrace}"
74+ )
75+ }
5776 VortexFuzzError :: ArrayNotEqual ( expected, actual, idx, lhs, rhs, step, backtrace) => {
5877 write ! (
5978 f,
@@ -62,6 +81,14 @@ impl Display for VortexFuzzError {
6281 rhs. display_tree( ) ,
6382 )
6483 }
84+ VortexFuzzError :: DTypeMismatch ( lhs, rhs, step, backtrace) => {
85+ write ! (
86+ f,
87+ "DType mismatch: expected {}, got {} in step {step}\n Backtrace:\n {backtrace}" ,
88+ lhs. dtype( ) ,
89+ rhs. dtype( )
90+ )
91+ }
6592 VortexFuzzError :: LengthMismatch ( lhs_len, rhs_len, lhs, rhs, step, backtrace) => {
6693 write ! (
6794 f,
@@ -80,10 +107,13 @@ impl Display for VortexFuzzError {
80107impl Error for VortexFuzzError {
81108 fn source ( & self ) -> Option < & ( dyn Error + ' static ) > {
82109 match self {
83- VortexFuzzError :: SearchSortedError ( ..) => None ,
84- VortexFuzzError :: ArrayNotEqual ( ..) => None ,
85- VortexFuzzError :: LengthMismatch ( ..) => None ,
86110 VortexFuzzError :: VortexError ( err, ..) => Some ( err) ,
111+ VortexFuzzError :: SearchSortedError ( ..)
112+ | VortexFuzzError :: ArrayNotEqual ( ..)
113+ | VortexFuzzError :: LengthMismatch ( ..)
114+ | VortexFuzzError :: ScalarMismatch ( ..)
115+ | VortexFuzzError :: MinMaxMismatch ( ..)
116+ | VortexFuzzError :: DTypeMismatch ( ..) => None ,
87117 }
88118 }
89119}
0 commit comments