@@ -794,7 +794,15 @@ mod tests {
794794 #[ case( SimpleColumnType :: Date , None ) ]
795795 #[ case( SimpleColumnType :: Time , None ) ]
796796 #[ case( SimpleColumnType :: Timestamp , None ) ]
797+ #[ case( SimpleColumnType :: Timestamptz , None ) ]
798+ #[ case( SimpleColumnType :: Interval , None ) ]
799+ #[ case( SimpleColumnType :: Bytea , None ) ]
797800 #[ case( SimpleColumnType :: Uuid , None ) ]
801+ #[ case( SimpleColumnType :: Json , None ) ]
802+ #[ case( SimpleColumnType :: Inet , None ) ]
803+ #[ case( SimpleColumnType :: Cidr , None ) ]
804+ #[ case( SimpleColumnType :: Macaddr , None ) ]
805+ #[ case( SimpleColumnType :: Xml , None ) ]
798806 fn test_simple_column_type_default_fill_value (
799807 #[ case] column_type : SimpleColumnType ,
800808 #[ case] expected : Option < & str > ,
@@ -851,4 +859,103 @@ mod tests {
851859 let ty = ColumnType :: Complex ( ComplexColumnType :: Varchar { length : 100 } ) ;
852860 assert_eq ! ( ty. default_fill_value( ) , Some ( "''" ) ) ;
853861 }
862+
863+ // Tests for enum_variant_names
864+ #[ test]
865+ fn test_enum_variant_names_simple_type_returns_none ( ) {
866+ let ty = ColumnType :: Simple ( SimpleColumnType :: Integer ) ;
867+ assert_eq ! ( ty. enum_variant_names( ) , None ) ;
868+ }
869+
870+ #[ test]
871+ fn test_enum_variant_names_complex_non_enum_returns_none ( ) {
872+ let ty = ColumnType :: Complex ( ComplexColumnType :: Varchar { length : 255 } ) ;
873+ assert_eq ! ( ty. enum_variant_names( ) , None ) ;
874+ }
875+
876+ #[ test]
877+ fn test_enum_variant_names_complex_numeric_returns_none ( ) {
878+ let ty = ColumnType :: Complex ( ComplexColumnType :: Numeric {
879+ precision : 10 ,
880+ scale : 2 ,
881+ } ) ;
882+ assert_eq ! ( ty. enum_variant_names( ) , None ) ;
883+ }
884+
885+ #[ test]
886+ fn test_enum_variant_names_complex_char_returns_none ( ) {
887+ let ty = ColumnType :: Complex ( ComplexColumnType :: Char { length : 1 } ) ;
888+ assert_eq ! ( ty. enum_variant_names( ) , None ) ;
889+ }
890+
891+ #[ test]
892+ fn test_enum_variant_names_complex_custom_returns_none ( ) {
893+ let ty = ColumnType :: Complex ( ComplexColumnType :: Custom {
894+ custom_type : "TSVECTOR" . into ( ) ,
895+ } ) ;
896+ assert_eq ! ( ty. enum_variant_names( ) , None ) ;
897+ }
898+
899+ #[ test]
900+ fn test_enum_variant_names_string_enum ( ) {
901+ let ty = ColumnType :: Complex ( ComplexColumnType :: Enum {
902+ name : "status" . into ( ) ,
903+ values : EnumValues :: String ( vec ! [ "active" . into( ) , "inactive" . into( ) , "pending" . into( ) ] ) ,
904+ } ) ;
905+ assert_eq ! (
906+ ty. enum_variant_names( ) ,
907+ Some ( vec![
908+ "active" . to_string( ) ,
909+ "inactive" . to_string( ) ,
910+ "pending" . to_string( )
911+ ] )
912+ ) ;
913+ }
914+
915+ #[ test]
916+ fn test_enum_variant_names_integer_enum ( ) {
917+ let ty = ColumnType :: Complex ( ComplexColumnType :: Enum {
918+ name : "priority" . into ( ) ,
919+ values : EnumValues :: Integer ( vec ! [
920+ NumValue {
921+ name: "Low" . into( ) ,
922+ value: 0 ,
923+ } ,
924+ NumValue {
925+ name: "Medium" . into( ) ,
926+ value: 5 ,
927+ } ,
928+ NumValue {
929+ name: "High" . into( ) ,
930+ value: 10 ,
931+ } ,
932+ ] ) ,
933+ } ) ;
934+ assert_eq ! (
935+ ty. enum_variant_names( ) ,
936+ Some ( vec![
937+ "Low" . to_string( ) ,
938+ "Medium" . to_string( ) ,
939+ "High" . to_string( )
940+ ] )
941+ ) ;
942+ }
943+
944+ #[ test]
945+ fn test_enum_variant_names_empty_string_enum ( ) {
946+ let ty = ColumnType :: Complex ( ComplexColumnType :: Enum {
947+ name : "empty" . into ( ) ,
948+ values : EnumValues :: String ( vec ! [ ] ) ,
949+ } ) ;
950+ assert_eq ! ( ty. enum_variant_names( ) , Some ( vec![ ] ) ) ;
951+ }
952+
953+ #[ test]
954+ fn test_enum_variant_names_empty_integer_enum ( ) {
955+ let ty = ColumnType :: Complex ( ComplexColumnType :: Enum {
956+ name : "empty" . into ( ) ,
957+ values : EnumValues :: Integer ( vec ! [ ] ) ,
958+ } ) ;
959+ assert_eq ! ( ty. enum_variant_names( ) , Some ( vec![ ] ) ) ;
960+ }
854961}
0 commit comments