@@ -504,6 +504,8 @@ describe("__table", () => {
504
504
} ;
505
505
const expectedEmpty = [ { } , { } , { } ] ;
506
506
expectedEmpty . schema = [ ] ;
507
+ expectedEmpty . fullSchema = source . schema ;
508
+ expectedEmpty . errors = new Map ( ) ;
507
509
assert . deepStrictEqual (
508
510
__table ( source , operationsEmptyColumns ) ,
509
511
expectedEmpty
@@ -514,6 +516,8 @@ describe("__table", () => {
514
516
} ;
515
517
const expectedSelected = [ { a : 1 } , { a : 2 } , { a : 3 } ] ;
516
518
expectedSelected . schema = [ { name : "a" , type : "integer" , inferred : "integer" } ] ;
519
+ expectedSelected . fullSchema = source . schema ;
520
+ expectedSelected . errors = new Map ( ) ;
517
521
assert . deepStrictEqual (
518
522
__table ( source , operationsSelectedColumns ) ,
519
523
expectedSelected
@@ -546,6 +550,8 @@ describe("__table", () => {
546
550
} ;
547
551
const expectedEq = [ { a : 1 , b : 2 , c : 3 } ] ;
548
552
expectedEq . schema = source . schema ;
553
+ expectedEq . fullSchema = source . schema ;
554
+ expectedEq . errors = new Map ( ) ;
549
555
assert . deepStrictEqual ( __table ( source , operationsEquals ) , expectedEq ) ;
550
556
const operationsComparison = {
551
557
...EMPTY_TABLE_DATA . operations ,
@@ -568,6 +574,8 @@ describe("__table", () => {
568
574
} ;
569
575
const expectedLtGt = [ { a : 2 , b : 4 , c : 6 } ] ;
570
576
expectedLtGt . schema = source . schema ;
577
+ expectedLtGt . fullSchema = source . schema ;
578
+ expectedLtGt . errors = new Map ( ) ;
571
579
assert . deepStrictEqual ( __table ( source , operationsComparison ) , expectedLtGt ) ;
572
580
} ) ;
573
581
@@ -586,6 +594,8 @@ describe("__table", () => {
586
594
} ;
587
595
const expectedEq = [ { a : 1 , b : 2 , c : 3 } ] ;
588
596
expectedEq . schema = source . schema ;
597
+ expectedEq . fullSchema = source . schema ;
598
+ expectedEq . errors = new Map ( ) ;
589
599
assert . deepStrictEqual ( __table ( source , operationsEquals ) , expectedEq ) ;
590
600
const operationsComparison = {
591
601
...EMPTY_TABLE_DATA . operations ,
@@ -608,6 +618,8 @@ describe("__table", () => {
608
618
} ;
609
619
const expectedLteGte = [ { a : 2 , b : 4 , c : 6 } ] ;
610
620
expectedLteGte . schema = source . schema ;
621
+ expectedLteGte . fullSchema = source . schema ;
622
+ expectedLteGte . errors = new Map ( ) ;
611
623
assert . deepStrictEqual (
612
624
__table ( source , operationsComparison ) ,
613
625
expectedLteGte
@@ -634,6 +646,8 @@ describe("__table", () => {
634
646
] ;
635
647
const expected = [ { a : new Date ( "2021-01-02" ) } ] ;
636
648
expected . schema = [ { name : "a" , type : "date" , inferred : "date" } ] ;
649
+ expected . fullSchema = expected . schema ;
650
+ expected . errors = new Map ( ) ;
637
651
assert . deepStrictEqual ( __table ( source , operationsEquals ) , expected ) ;
638
652
} ) ;
639
653
@@ -648,6 +662,8 @@ describe("__table", () => {
648
662
{ a : 1 , b : 2 , c : 3 }
649
663
] ;
650
664
expectedDesc . schema = source . schema ;
665
+ expectedDesc . fullSchema = source . schema ;
666
+ expectedDesc . errors = new Map ( ) ;
651
667
assert . deepStrictEqual ( __table ( source , operationsDesc ) , expectedDesc ) ;
652
668
const operationsAsc = {
653
669
...EMPTY_TABLE_DATA . operations ,
@@ -659,6 +675,8 @@ describe("__table", () => {
659
675
{ a : 3 , b : 6 , c : 9 }
660
676
] ;
661
677
expectedAsc . schema = source . schema ;
678
+ expectedAsc . fullSchema = source . schema ;
679
+ expectedAsc . errors = new Map ( ) ;
662
680
assert . deepStrictEqual ( __table ( source , operationsAsc ) , expectedAsc ) ;
663
681
const sourceExtended = [ ...source , { a : 1 , b : 3 , c : 3 } , { a : 1 , b : 5 , c : 3 } ] ;
664
682
const operationsMulti = {
@@ -676,6 +694,8 @@ describe("__table", () => {
676
694
{ a : 1 , b : 2 , c : 3 }
677
695
] ;
678
696
expectedExtended . schema = source . schema ;
697
+ expectedExtended . fullSchema = source . schema ;
698
+ expectedExtended . errors = new Map ( ) ;
679
699
assert . deepStrictEqual (
680
700
__table ( sourceExtended , operationsMulti ) ,
681
701
expectedExtended
@@ -694,6 +714,8 @@ describe("__table", () => {
694
714
{ a : 20 } , { a : 10 } , { a : 5 } , { a : 1 } , { a : NaN } , { a : NaN } , { a : NaN } , { a : NaN }
695
715
] ;
696
716
expectedDesc . schema = [ { name : "a" , type : "number" , inferred : "number" } ] ;
717
+ expectedDesc . fullSchema = expectedDesc . schema ;
718
+ expectedDesc . errors = new Map ( ) ;
697
719
assert . deepStrictEqual (
698
720
__table ( sourceWithMissing , operationsDesc ) ,
699
721
expectedDesc
@@ -706,6 +728,8 @@ describe("__table", () => {
706
728
{ a : 1 } , { a : 5 } , { a : 10 } , { a : 20 } , { a : NaN } , { a : NaN } , { a : NaN } , { a : NaN }
707
729
] ;
708
730
expectedAsc . schema = [ { name : "a" , type : "number" , inferred : "number" } ] ;
731
+ expectedAsc . fullSchema = expectedAsc . schema ;
732
+ expectedAsc . errors = new Map ( ) ;
709
733
assert . deepStrictEqual (
710
734
__table ( sourceWithMissing , operationsAsc ) ,
711
735
expectedAsc
@@ -723,6 +747,8 @@ describe("__table", () => {
723
747
{ a : 1 , b : 2 , c : 3 }
724
748
] ;
725
749
sorted . schema = source . schema ;
750
+ sorted . fullSchema = source . schema ;
751
+ sorted . errors = new Map ( ) ;
726
752
assert . deepStrictEqual ( __table ( source , operations ) , sorted ) ;
727
753
const originalOrder = [
728
754
{ a : 1 , b : 2 , c : 3 } ,
@@ -743,13 +769,17 @@ describe("__table", () => {
743
769
{ a : 3 , b : 6 , c : 9 }
744
770
] ;
745
771
expectedToNull . schema = source . schema ;
772
+ expectedToNull . fullSchema = source . schema ;
773
+ expectedToNull . errors = new Map ( ) ;
746
774
assert . deepStrictEqual ( __table ( source , operationsToNull ) , expectedToNull ) ;
747
775
const operationsFromNull = {
748
776
...EMPTY_TABLE_DATA . operations ,
749
777
slice : { from : null , to : 1 }
750
778
} ;
751
779
const expectedFromNull = [ { a : 1 , b : 2 , c : 3 } ] ;
752
780
expectedFromNull . schema = source . schema ;
781
+ expectedFromNull . fullSchema = source . schema ;
782
+ expectedFromNull . errors = new Map ( ) ;
753
783
assert . deepStrictEqual (
754
784
__table ( source , operationsFromNull ) ,
755
785
expectedFromNull
@@ -760,6 +790,8 @@ describe("__table", () => {
760
790
} ;
761
791
const expectedSlice = [ { a : 2 , b : 4 , c : 6 } ] ;
762
792
expectedSlice . schema = source . schema ;
793
+ expectedSlice . fullSchema = source . schema ;
794
+ expectedSlice . errors = new Map ( ) ;
763
795
assert . deepStrictEqual ( __table ( source , operations ) , expectedSlice ) ;
764
796
} ) ;
765
797
@@ -794,18 +826,16 @@ describe("__table", () => {
794
826
{ nameA : 2 , b : 4 , c : 6 } ,
795
827
{ nameA : 3 , b : 6 , c : 9 }
796
828
] ;
797
- expected . schema = [
829
+ const schema = [
798
830
{ name : "nameA" , type : "integer" , inferred : "integer" } ,
799
831
{ name : "b" , type : "integer" , inferred : "integer" } ,
800
832
{ name : "c" , type : "integer" , inferred : "integer" }
801
833
] ;
834
+ expected . schema = schema ;
835
+ expected . fullSchema = schema ;
836
+ expected . errors = new Map ( ) ;
802
837
assert . deepStrictEqual ( __table ( source , operations ) , expected ) ;
803
838
source . columns = [ "a" , "b" , "c" ] ;
804
- assert . deepStrictEqual ( __table ( source , operations ) . schema , [
805
- { name : "nameA" , type : "integer" , inferred : "integer" } ,
806
- { name : "b" , type : "integer" , inferred : "integer" } ,
807
- { name : "c" , type : "integer" , inferred : "integer" }
808
- ] ) ;
809
839
} ) ;
810
840
811
841
it ( "__table type assertions" , ( ) => {
@@ -823,13 +853,59 @@ describe("__table", () => {
823
853
{ name : "b" , type : "integer" , inferred : "integer" } ,
824
854
{ name : "c" , type : "integer" , inferred : "integer" }
825
855
] ;
856
+ expected . fullSchema = expected . schema ;
857
+ expected . errors = new Map ( ) ;
826
858
assert . deepStrictEqual ( __table ( source , operations ) , expected ) ;
827
859
source . columns = [ "a" , "b" , "c" ] ;
828
- assert . deepStrictEqual ( __table ( source , operations ) . schema , [
829
- { name : "a" , type : "string" , inferred : "integer" } ,
860
+ } ) ;
861
+
862
+ it ( "__table derived columns" , ( ) => {
863
+ const operations = {
864
+ ...EMPTY_TABLE_DATA . operations ,
865
+ derive : [ { name : "d" , value : ( row ) => row . a ** 2 } ]
866
+ } ;
867
+ const expected = [
868
+ { a : 1 , b : 2 , c : 3 , d : 1 } ,
869
+ { a : 2 , b : 4 , c : 6 , d : 4 } ,
870
+ { a : 3 , b : 6 , c : 9 , d : 9 }
871
+ ] ;
872
+ expected . schema = [
873
+ { name : "a" , type : "integer" , inferred : "integer" } ,
830
874
{ name : "b" , type : "integer" , inferred : "integer" } ,
831
- { name : "c" , type : "integer" , inferred : "integer" }
832
- ] ) ;
875
+ { name : "c" , type : "integer" , inferred : "integer" } ,
876
+ { name : "d" , type : "integer" , inferred : "integer" }
877
+ ] ;
878
+ expected . fullSchema = expected . schema ;
879
+ expected . errors = new Map ( ) ;
880
+ assert . deepStrictEqual ( __table ( source , operations ) , expected ) ;
881
+ } ) ;
882
+
883
+ it ( "__table derived columns with errors" , ( ) => {
884
+ const functionWithError = ( row ) => row . a . b . c ;
885
+ const operations = {
886
+ ...EMPTY_TABLE_DATA . operations ,
887
+ derive : [ { name : "d" , value : functionWithError } ]
888
+ } ;
889
+ let error ;
890
+ try {
891
+ functionWithError ( source [ 0 ] ) ;
892
+ } catch ( e ) {
893
+ error = e ;
894
+ }
895
+ const expected = [
896
+ { a : 1 , b : 2 , c : 3 , d : undefined } ,
897
+ { a : 2 , b : 4 , c : 6 , d : undefined } ,
898
+ { a : 3 , b : 6 , c : 9 , d : undefined }
899
+ ] ;
900
+ expected . schema = [
901
+ { name : "a" , type : "integer" , inferred : "integer" } ,
902
+ { name : "b" , type : "integer" , inferred : "integer" } ,
903
+ { name : "c" , type : "integer" , inferred : "integer" } ,
904
+ { name : "d" , type : "other" , inferred : "other" }
905
+ ] ;
906
+ expected . fullSchema = expected . schema ;
907
+ expected . errors = new Map ( [ [ "d" , [ { index : 0 , error} , { index : 1 , error} , { index : 2 , error} ] ] ] ) ;
908
+ assert . deepStrictEqual ( __table ( source , operations ) , expected ) ;
833
909
} ) ;
834
910
} ) ;
835
911
0 commit comments