@@ -40,6 +40,33 @@ describe('Test .rowCount()', () => {
4040 } ) ;
4141} )
4242
43+ describe ( 'Test .rowCount() nestedColumns' , ( ) => {
44+ const testData = DataGenerator . multiIndexCol ( {
45+ data : [
46+ { name : "('year', '')" , type : 'number' , data : [ 2013 , 2013 , 2014 , 2014 ] } ,
47+ { name : "('visit', '')" , type : 'number' , data : [ 1 , 2 , 1 , 2 ] } ,
48+ { name : "('Bob', 'HR')" , type : 'number' , data : [ 41.0 , 28.0 , 42.0 , 37.0 ] } ,
49+ { name : "('Bob', 'Temp')" , type : 'number' , data : [ 37.1 , 35.2 , 37.3 , 39.2 ] } ,
50+ { name : "('Guido', 'HR')" , type : 'number' , data : [ 50.0 , 35.0 , 42.0 , 31.0 ] } ,
51+ { name : "('Guido', 'Temp')" , type : 'number' , data : [ 37.7 , 37.1 , 37.4 , 35.1 ] } ,
52+ { name : "('Sue', 'HR')" , type : 'number' , data : [ 23.0 , 48.0 , 44.0 , 34.0 ] } ,
53+ { name : "('Sue', 'Temp')" , type : 'number' , data : [ 37.5 , 37.1 , 37.5 , 39.0 ] } ,
54+ { name : "('ipydguuid', '')" , type : 'number' , data : [ 0 , 1 , 2 , 3 ] } ,
55+ ] ,
56+ length : 4 ,
57+ primaryKeyData : [ "('year', '')" , "('visit', '')" , "('ipydguuid', '')" ]
58+ } ,
59+ "('ipydguuid', '')"
60+ )
61+ const testView = new View ( testData )
62+ test ( 'cellregion-body' , ( ) => {
63+ expect ( testView . rowCount ( 'body' ) ) . toBe ( 4 )
64+ } ) ;
65+ test ( 'cellregion-column-header' , ( ) => {
66+ expect ( testView . rowCount ( 'column-header' ) ) . toBe ( 2 )
67+ } ) ;
68+ } )
69+
4370describe ( 'Test .columnCount()' , ( ) => {
4471 const testData = DataGenerator . multiCol ( {
4572 length : 3 , data : [
@@ -56,6 +83,33 @@ describe('Test .columnCount()', () => {
5683 } ) ;
5784} )
5885
86+ describe ( 'Test .columnCount() nestedColumns' , ( ) => {
87+ const testData = DataGenerator . multiIndexCol ( {
88+ data : [
89+ { name : "('year', '')" , type : 'number' , data : [ 2013 , 2013 , 2014 , 2014 ] } ,
90+ { name : "('visit', '')" , type : 'number' , data : [ 1 , 2 , 1 , 2 ] } ,
91+ { name : "('Bob', 'HR')" , type : 'number' , data : [ 41.0 , 28.0 , 42.0 , 37.0 ] } ,
92+ { name : "('Bob', 'Temp')" , type : 'number' , data : [ 37.1 , 35.2 , 37.3 , 39.2 ] } ,
93+ { name : "('Guido', 'HR')" , type : 'number' , data : [ 50.0 , 35.0 , 42.0 , 31.0 ] } ,
94+ { name : "('Guido', 'Temp')" , type : 'number' , data : [ 37.7 , 37.1 , 37.4 , 35.1 ] } ,
95+ { name : "('Sue', 'HR')" , type : 'number' , data : [ 23.0 , 48.0 , 44.0 , 34.0 ] } ,
96+ { name : "('Sue', 'Temp')" , type : 'number' , data : [ 37.5 , 37.1 , 37.5 , 39.0 ] } ,
97+ { name : "('ipydguuid', '')" , type : 'number' , data : [ 0 , 1 , 2 , 3 ] } ,
98+ ] ,
99+ length : 4 ,
100+ primaryKeyData : [ "('year', '')" , "('visit', '')" , "('ipydguuid', '')" ]
101+ } ,
102+ "('ipydguuid', '')"
103+ )
104+ const testView = new View ( testData )
105+ test ( 'cellregion-body' , ( ) => {
106+ expect ( testView . columnCount ( 'body' ) ) . toBe ( 6 )
107+ } ) ;
108+ test ( 'cellregion-row-header' , ( ) => {
109+ expect ( testView . columnCount ( 'row-header' ) ) . toBe ( 3 ) // Including primary key uuid
110+ } ) ;
111+ } )
112+
59113describe ( 'Test .data()' , ( ) => {
60114 const testData = DataGenerator . multiCol ( {
61115 length : 3 , data : [
@@ -81,6 +135,48 @@ describe('Test .data()', () => {
81135 } )
82136} ) ;
83137
138+ describe ( 'Test .data() nestedColumns' , ( ) => {
139+ const testData = DataGenerator . multiIndexCol ( {
140+ data : [
141+ { name : "('year', '')" , type : 'number' , data : [ 2013 , 2013 , 2014 , 2014 ] } ,
142+ { name : "('visit', '')" , type : 'number' , data : [ 1 , 2 , 1 , 2 ] } ,
143+ { name : "('Bob', 'HR')" , type : 'number' , data : [ 41.0 , 28.0 , 42.0 , 37.0 ] } ,
144+ { name : "('Bob', 'Temp')" , type : 'number' , data : [ 37.1 , 35.2 , 37.3 , 39.2 ] } ,
145+ { name : "('Guido', 'HR')" , type : 'number' , data : [ 50.0 , 35.0 , 42.0 , 31.0 ] } ,
146+ { name : "('Guido', 'Temp')" , type : 'number' , data : [ 37.7 , 37.1 , 37.4 , 35.1 ] } ,
147+ { name : "('Sue', 'HR')" , type : 'number' , data : [ 23.0 , 48.0 , 44.0 , 34.0 ] } ,
148+ { name : "('Sue', 'Temp')" , type : 'number' , data : [ 37.5 , 37.1 , 37.5 , 39.0 ] } ,
149+ { name : "('ipydguuid', '')" , type : 'number' , data : [ 0 , 1 , 2 , 3 ] } ,
150+ ] ,
151+ length : 4 ,
152+ primaryKeyData : [ "('year', '')" , "('visit', '')" , "('ipydguuid', '')" ]
153+ } ,
154+ "('ipydguuid', '')"
155+ )
156+ const testView = new View ( testData )
157+ const testCases : Private . DataTestCase [ ] = [
158+ { region : 'body' , row : 0 , column : 0 , expected : 41.0 } ,
159+ { region : 'body' , row : 1 , column : 3 , expected : 37.1 } ,
160+ { region : 'body' , row : 2 , column : 2 , expected : 42.0 } ,
161+ { region : 'body' , row : 3 , column : 5 , expected : 39.0 } ,
162+ { region : 'column-header' , row : 0 , column : 0 , expected : "Bob" } ,
163+ { region : 'column-header' , row : 0 , column : 1 , expected : "Bob" } ,
164+ { region : 'column-header' , row : 1 , column : 4 , expected : "HR" } ,
165+ { region : 'column-header' , row : 1 , column : 5 , expected : "Temp" } ,
166+ { region : 'row-header' , row : 0 , column : 0 , expected : 2013 } ,
167+ { region : 'row-header' , row : 0 , column : 1 , expected : 1 } ,
168+ { region : 'row-header' , row : 1 , column : 1 , expected : 2 } ,
169+ { region : 'row-header' , row : 3 , column : 0 , expected : 2014 }
170+ ] ;
171+ testCases . forEach ( val => {
172+ test ( `cellregion-${ val . region } -${ val . row } ,${ val . column } ` , ( ) => {
173+ expect ( testView . data ( val . region , val . row , val . column ) ) . toBe ( val . expected )
174+ } ) ;
175+ } )
176+ } ) ;
177+
178+
179+
84180/**
85181 * The namespace for the module implementation details.
86182 */
0 commit comments