@@ -1088,3 +1088,72 @@ def testAddData(self):
10881088
10891089 table .delete ()
10901090 table .close ()
1091+
1092+ def testUpdateFirstRow (self , twoColumnFiveRowTable ):
1093+
1094+ updateData = omero .grid .Data ()
1095+ updateData .rowNumbers = [0 ]
1096+ updateData .columns = [
1097+ columns .LongColumnI ('lc' , 'long' , [6 ]),
1098+ columns .DoubleColumnI ('dc' , 'double' , [2.5 ])
1099+ ]
1100+ twoColumnFiveRowTable .update (updateData )
1101+
1102+ data = twoColumnFiveRowTable .slice ([], [])
1103+ assert 2 == len (data .columns )
1104+ assert [6 , 2 , 3 , 4 , 5 ] == data .columns [0 ].values
1105+ assert [2.5 , 0.5 , 1.0 , 1.5 , 2.0 ] == data .columns [1 ].values
1106+ assert [0 , 1 , 2 , 3 , 4 ] == data .rowNumbers
1107+
1108+ def testUpdateMultipleRows (self , twoColumnFiveRowTable ):
1109+
1110+ updateData = omero .grid .Data ()
1111+ updateData .rowNumbers = [0 , 3 , 4 ]
1112+ updateData .columns = [
1113+ columns .LongColumnI ('lc' , 'long' , [1 , 7 , 8 ]),
1114+ columns .DoubleColumnI ('dc' , 'double' , [0 , 3.0 , 3.5 ])
1115+ ]
1116+ twoColumnFiveRowTable .update (updateData )
1117+
1118+ data = twoColumnFiveRowTable .slice ([], [])
1119+ assert 2 == len (data .columns )
1120+ assert [1 , 2 , 3 , 7 , 8 ] == data .columns [0 ].values
1121+ assert [0 , 0.5 , 1.0 , 3.0 , 3.5 ] == data .columns [1 ].values
1122+ assert [0 , 1 , 2 , 3 , 4 ] == data .rowNumbers
1123+
1124+ def testUpdateAllows (self , twoColumnFiveRowTable ):
1125+
1126+ updateData = omero .grid .Data ()
1127+ updateData .rowNumbers = [0 , 1 , 2 , 3 , 4 ]
1128+ updateData .columns = [
1129+ columns .LongColumnI ('lc' , 'long' , [2 , 3 , 4 , 5 , 6 ]),
1130+ columns .DoubleColumnI ('dc' , 'double' , [1.0 , 1.5 , 2.0 , 2.5 , 3.0 ])
1131+ ]
1132+ twoColumnFiveRowTable .update (updateData )
1133+
1134+ data = twoColumnFiveRowTable .slice ([], [])
1135+ assert 2 == len (data .columns )
1136+ assert [2 , 3 , 4 , 5 , 6 ] == data .columns [0 ].values
1137+ assert [1.0 , 1.5 , 2.0 , 2.5 , 3.0 ] == data .columns [1 ].values
1138+ assert [0 , 1 , 2 , 3 , 4 ] == data .rowNumbers
1139+
1140+ def testCannotUpdateOutOfRange (self , twoColumnFiveRowTable ):
1141+
1142+ updateData = omero .grid .Data ()
1143+ updateData .rowNumbers = [5 ]
1144+ updateData .columns = [
1145+ columns .LongColumnI ('lc' , 'long' , [2 ]),
1146+ columns .DoubleColumnI ('dc' , 'double' , [1.0 ])
1147+ ]
1148+ # colNumbers must match number of columns
1149+ with pytest .raises (omero .ApiUsageException ):
1150+ twoColumnFiveRowTable .update (updateData )
1151+
1152+ updateData .rowNumbers = [3 , 5 ]
1153+ updateData .columns = [
1154+ columns .LongColumnI ('lc' , 'long' , [1 , 2 ]),
1155+ columns .DoubleColumnI ('dc' , 'double' , [0.0 , 1.0 ])
1156+ ]
1157+ # colNumbers must match number of columns
1158+ with pytest .raises (omero .ApiUsageException ):
1159+ twoColumnFiveRowTable .update (updateData )
0 commit comments