1*eba4d44aSLiu Zhe /************************************************************** 2*eba4d44aSLiu Zhe * 3*eba4d44aSLiu Zhe * Licensed to the Apache Software Foundation (ASF) under one 4*eba4d44aSLiu Zhe * or more contributor license agreements. See the NOTICE file 5*eba4d44aSLiu Zhe * distributed with this work for additional information 6*eba4d44aSLiu Zhe * regarding copyright ownership. The ASF licenses this file 7*eba4d44aSLiu Zhe * to you under the Apache License, Version 2.0 (the 8*eba4d44aSLiu Zhe * "License"); you may not use this file except in compliance 9*eba4d44aSLiu Zhe * with the License. You may obtain a copy of the License at 10*eba4d44aSLiu Zhe * 11*eba4d44aSLiu Zhe * http://www.apache.org/licenses/LICENSE-2.0 12*eba4d44aSLiu Zhe * 13*eba4d44aSLiu Zhe * Unless required by applicable law or agreed to in writing, 14*eba4d44aSLiu Zhe * software distributed under the License is distributed on an 15*eba4d44aSLiu Zhe * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*eba4d44aSLiu Zhe * KIND, either express or implied. See the License for the 17*eba4d44aSLiu Zhe * specific language governing permissions and limitations 18*eba4d44aSLiu Zhe * under the License. 19*eba4d44aSLiu Zhe * 20*eba4d44aSLiu Zhe *************************************************************/ 21*eba4d44aSLiu Zhe package fvt.uno.sc.data; 22*eba4d44aSLiu Zhe 23*eba4d44aSLiu Zhe import static org.junit.Assert.*; 24*eba4d44aSLiu Zhe 25*eba4d44aSLiu Zhe import org.junit.After; 26*eba4d44aSLiu Zhe import org.junit.AfterClass; 27*eba4d44aSLiu Zhe import org.junit.Before; 28*eba4d44aSLiu Zhe import org.junit.BeforeClass; 29*eba4d44aSLiu Zhe import org.junit.Test; 30*eba4d44aSLiu Zhe import org.openoffice.test.uno.UnoApp; 31*eba4d44aSLiu Zhe 32*eba4d44aSLiu Zhe import testlib.uno.SCUtil; 33*eba4d44aSLiu Zhe 34*eba4d44aSLiu Zhe import com.sun.star.lang.XComponent; 35*eba4d44aSLiu Zhe import com.sun.star.sheet.GeneralFunction; 36*eba4d44aSLiu Zhe import com.sun.star.sheet.SubTotalColumn; 37*eba4d44aSLiu Zhe import com.sun.star.sheet.XCellRangeData; 38*eba4d44aSLiu Zhe import com.sun.star.sheet.XSpreadsheet; 39*eba4d44aSLiu Zhe import com.sun.star.sheet.XSpreadsheetDocument; 40*eba4d44aSLiu Zhe import com.sun.star.sheet.XSubTotalCalculatable; 41*eba4d44aSLiu Zhe import com.sun.star.sheet.XSubTotalDescriptor; 42*eba4d44aSLiu Zhe import com.sun.star.table.XCellRange; 43*eba4d44aSLiu Zhe import com.sun.star.text.XTextDocument; 44*eba4d44aSLiu Zhe import com.sun.star.uno.UnoRuntime; 45*eba4d44aSLiu Zhe 46*eba4d44aSLiu Zhe public class SubtotalsForGroup { 47*eba4d44aSLiu Zhe private static final UnoApp app = new UnoApp(); 48*eba4d44aSLiu Zhe 49*eba4d44aSLiu Zhe UnoApp unoApp = new UnoApp(); 50*eba4d44aSLiu Zhe XSpreadsheetDocument scDocument = null; 51*eba4d44aSLiu Zhe XComponent scComponent = null; 52*eba4d44aSLiu Zhe 53*eba4d44aSLiu Zhe @Before setUpDocument()54*eba4d44aSLiu Zhe public void setUpDocument() throws Exception { 55*eba4d44aSLiu Zhe unoApp.start(); 56*eba4d44aSLiu Zhe scComponent = unoApp.newDocument("scalc"); 57*eba4d44aSLiu Zhe } 58*eba4d44aSLiu Zhe 59*eba4d44aSLiu Zhe @After tearDownDocument()60*eba4d44aSLiu Zhe public void tearDownDocument() { 61*eba4d44aSLiu Zhe unoApp.close(); 62*eba4d44aSLiu Zhe unoApp.closeDocument(scComponent); 63*eba4d44aSLiu Zhe 64*eba4d44aSLiu Zhe } 65*eba4d44aSLiu Zhe 66*eba4d44aSLiu Zhe @BeforeClass setUpConnection()67*eba4d44aSLiu Zhe public static void setUpConnection() throws Exception { 68*eba4d44aSLiu Zhe 69*eba4d44aSLiu Zhe } 70*eba4d44aSLiu Zhe 71*eba4d44aSLiu Zhe @AfterClass tearDownConnection()72*eba4d44aSLiu Zhe public static void tearDownConnection() throws InterruptedException, 73*eba4d44aSLiu Zhe Exception { 74*eba4d44aSLiu Zhe 75*eba4d44aSLiu Zhe } 76*eba4d44aSLiu Zhe 77*eba4d44aSLiu Zhe @Test testForSecondGroup()78*eba4d44aSLiu Zhe public void testForSecondGroup() throws Exception { 79*eba4d44aSLiu Zhe scComponent = unoApp.newDocument("scalc"); 80*eba4d44aSLiu Zhe scDocument = SCUtil.getSCDocument(scComponent); 81*eba4d44aSLiu Zhe XSpreadsheet currentsheet = SCUtil.getCurrentSheet(scDocument); 82*eba4d44aSLiu Zhe XCellRange xdataRange = (XCellRange) UnoRuntime.queryInterface( 83*eba4d44aSLiu Zhe XCellRange.class, currentsheet); 84*eba4d44aSLiu Zhe XCellRange sourceRange = currentsheet.getCellRangeByName("A1:E8"); 85*eba4d44aSLiu Zhe XCellRangeData sourceData = (XCellRangeData) UnoRuntime.queryInterface( 86*eba4d44aSLiu Zhe XCellRangeData.class, sourceRange); 87*eba4d44aSLiu Zhe Object[][] Source = { { "Level", "Code", "No.", "Team", "Name" }, 88*eba4d44aSLiu Zhe { "BS", 20, 4, "B", "Elle" }, { "BS", 20, 6, "C", "Sweet" }, 89*eba4d44aSLiu Zhe { "BS", 20, 2, "A", "Chcomic" }, { "CS", 30, 5, "A", "Ally" }, 90*eba4d44aSLiu Zhe { "MS", 10, 1, "A", "Joker" }, { "MS", 10, 3, "B", "Kevin" }, 91*eba4d44aSLiu Zhe { "CS", 30, 7, "C", "Tom" } }; 92*eba4d44aSLiu Zhe sourceData.setDataArray(Source); 93*eba4d44aSLiu Zhe 94*eba4d44aSLiu Zhe // Create SubTotals 95*eba4d44aSLiu Zhe XSubTotalCalculatable xSub = (XSubTotalCalculatable) UnoRuntime 96*eba4d44aSLiu Zhe .queryInterface(XSubTotalCalculatable.class, sourceRange); 97*eba4d44aSLiu Zhe XSubTotalDescriptor xSubDesc = xSub.createSubTotalDescriptor(true); 98*eba4d44aSLiu Zhe SubTotalColumn[] aColumns = new SubTotalColumn[1]; 99*eba4d44aSLiu Zhe SubTotalColumn[] bColumns = new SubTotalColumn[1]; 100*eba4d44aSLiu Zhe // calculate sum of Second column 101*eba4d44aSLiu Zhe aColumns[0] = new SubTotalColumn(); 102*eba4d44aSLiu Zhe aColumns[0].Column = 1; 103*eba4d44aSLiu Zhe aColumns[0].Function = GeneralFunction.SUM; 104*eba4d44aSLiu Zhe // group by 4th column 105*eba4d44aSLiu Zhe xSubDesc.addNew(aColumns, 3); 106*eba4d44aSLiu Zhe 107*eba4d44aSLiu Zhe // calculate sum of third column 108*eba4d44aSLiu Zhe bColumns[0] = new SubTotalColumn(); 109*eba4d44aSLiu Zhe bColumns[0].Column = 2; 110*eba4d44aSLiu Zhe bColumns[0].Function = GeneralFunction.SUM; 111*eba4d44aSLiu Zhe // group by second column 112*eba4d44aSLiu Zhe xSubDesc.addNew(bColumns, 1); 113*eba4d44aSLiu Zhe xSub.applySubTotals(xSubDesc, true); 114*eba4d44aSLiu Zhe 115*eba4d44aSLiu Zhe // Verify the result on line 3 116*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 2)); 117*eba4d44aSLiu Zhe 118*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$2:$C$2)", 119*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 2)); 120*eba4d44aSLiu Zhe 121*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 2, 2), 122*eba4d44aSLiu Zhe 0.000000001); 123*eba4d44aSLiu Zhe 124*eba4d44aSLiu Zhe // Verify the result on line 5 125*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 4)); 126*eba4d44aSLiu Zhe 127*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$4:$C$4)", 128*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 4)); 129*eba4d44aSLiu Zhe 130*eba4d44aSLiu Zhe assertEquals(2, SCUtil.getValueFromCell(currentsheet, 2, 4), 131*eba4d44aSLiu Zhe 0.000000001); 132*eba4d44aSLiu Zhe 133*eba4d44aSLiu Zhe // Verify the result on line 7 134*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 6)); 135*eba4d44aSLiu Zhe 136*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$6:$C$6)", 137*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 6)); 138*eba4d44aSLiu Zhe 139*eba4d44aSLiu Zhe assertEquals(5, SCUtil.getValueFromCell(currentsheet, 2, 6), 140*eba4d44aSLiu Zhe 0.000000001); 141*eba4d44aSLiu Zhe 142*eba4d44aSLiu Zhe // Verify the result on line 8 143*eba4d44aSLiu Zhe assertEquals("A Sum", SCUtil.getTextFromCell(currentsheet, 3, 7)); 144*eba4d44aSLiu Zhe 145*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$7)", 146*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 7)); 147*eba4d44aSLiu Zhe 148*eba4d44aSLiu Zhe assertEquals(60, SCUtil.getValueFromCell(currentsheet, 1, 7), 149*eba4d44aSLiu Zhe 0.000000001); 150*eba4d44aSLiu Zhe 151*eba4d44aSLiu Zhe // Verify the result on line 10 152*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 9)); 153*eba4d44aSLiu Zhe 154*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$9:$C$9)", 155*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 9)); 156*eba4d44aSLiu Zhe 157*eba4d44aSLiu Zhe assertEquals(3, SCUtil.getValueFromCell(currentsheet, 2, 9), 158*eba4d44aSLiu Zhe 0.000000001); 159*eba4d44aSLiu Zhe 160*eba4d44aSLiu Zhe // Verify the result on line 12 161*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 11)); 162*eba4d44aSLiu Zhe 163*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$11:$C$11)", 164*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 11)); 165*eba4d44aSLiu Zhe 166*eba4d44aSLiu Zhe assertEquals(4, SCUtil.getValueFromCell(currentsheet, 2, 11), 167*eba4d44aSLiu Zhe 0.000000001); 168*eba4d44aSLiu Zhe 169*eba4d44aSLiu Zhe // Verify the result on line 13 170*eba4d44aSLiu Zhe assertEquals("B Sum", SCUtil.getTextFromCell(currentsheet, 3, 12)); 171*eba4d44aSLiu Zhe 172*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$9:$B$12)", 173*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 12)); 174*eba4d44aSLiu Zhe 175*eba4d44aSLiu Zhe assertEquals(30, SCUtil.getValueFromCell(currentsheet, 1, 12), 176*eba4d44aSLiu Zhe 0.000000001); 177*eba4d44aSLiu Zhe 178*eba4d44aSLiu Zhe // Verify the result on line 15 179*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 14)); 180*eba4d44aSLiu Zhe 181*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$14:$C$14)", 182*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 14)); 183*eba4d44aSLiu Zhe 184*eba4d44aSLiu Zhe assertEquals(6, SCUtil.getValueFromCell(currentsheet, 2, 14), 185*eba4d44aSLiu Zhe 0.000000001); 186*eba4d44aSLiu Zhe 187*eba4d44aSLiu Zhe // Verify the result on line 17 188*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 16)); 189*eba4d44aSLiu Zhe 190*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$16:$C$16)", 191*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 16)); 192*eba4d44aSLiu Zhe 193*eba4d44aSLiu Zhe assertEquals(7, SCUtil.getValueFromCell(currentsheet, 2, 16), 194*eba4d44aSLiu Zhe 0.000000001); 195*eba4d44aSLiu Zhe 196*eba4d44aSLiu Zhe // Verify the result on line 18 197*eba4d44aSLiu Zhe assertEquals("C Sum", SCUtil.getTextFromCell(currentsheet, 3, 17)); 198*eba4d44aSLiu Zhe 199*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$14:$B$17)", 200*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 17)); 201*eba4d44aSLiu Zhe 202*eba4d44aSLiu Zhe assertEquals(50, SCUtil.getValueFromCell(currentsheet, 1, 17), 203*eba4d44aSLiu Zhe 0.000000001); 204*eba4d44aSLiu Zhe 205*eba4d44aSLiu Zhe // Verify the result on line 19 206*eba4d44aSLiu Zhe assertEquals("Grand Total", SCUtil.getTextFromCell(currentsheet, 3, 18)); 207*eba4d44aSLiu Zhe 208*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$18)", 209*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 18)); 210*eba4d44aSLiu Zhe 211*eba4d44aSLiu Zhe assertEquals(140, SCUtil.getValueFromCell(currentsheet, 1, 18), 212*eba4d44aSLiu Zhe 0.000000001); 213*eba4d44aSLiu Zhe 214*eba4d44aSLiu Zhe // Save the file and reload it 215*eba4d44aSLiu Zhe SCUtil.saveFileAs(scComponent, "SubTotalsForGroup", "ods"); 216*eba4d44aSLiu Zhe XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp, 217*eba4d44aSLiu Zhe scDocument, "SubTotalsForGroup.ods"); 218*eba4d44aSLiu Zhe scDocument = scDocumentTemp; 219*eba4d44aSLiu Zhe currentsheet = SCUtil.getCurrentSheet(scDocument); 220*eba4d44aSLiu Zhe 221*eba4d44aSLiu Zhe // verify it again 222*eba4d44aSLiu Zhe // Verify the result on line 3 223*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 2)); 224*eba4d44aSLiu Zhe 225*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$2:$C$2)", 226*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 2)); 227*eba4d44aSLiu Zhe 228*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 2, 2), 229*eba4d44aSLiu Zhe 0.000000001); 230*eba4d44aSLiu Zhe 231*eba4d44aSLiu Zhe // Verify the result on line 5 232*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 4)); 233*eba4d44aSLiu Zhe 234*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$4:$C$4)", 235*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 4)); 236*eba4d44aSLiu Zhe 237*eba4d44aSLiu Zhe assertEquals(2, SCUtil.getValueFromCell(currentsheet, 2, 4), 238*eba4d44aSLiu Zhe 0.000000001); 239*eba4d44aSLiu Zhe 240*eba4d44aSLiu Zhe // Verify the result on line 7 241*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 6)); 242*eba4d44aSLiu Zhe 243*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$6:$C$6)", 244*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 6)); 245*eba4d44aSLiu Zhe 246*eba4d44aSLiu Zhe assertEquals(5, SCUtil.getValueFromCell(currentsheet, 2, 6), 247*eba4d44aSLiu Zhe 0.000000001); 248*eba4d44aSLiu Zhe 249*eba4d44aSLiu Zhe // Verify the result on line 8 250*eba4d44aSLiu Zhe assertEquals("A Sum", SCUtil.getTextFromCell(currentsheet, 3, 7)); 251*eba4d44aSLiu Zhe 252*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$7)", 253*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 7)); 254*eba4d44aSLiu Zhe 255*eba4d44aSLiu Zhe assertEquals(60, SCUtil.getValueFromCell(currentsheet, 1, 7), 256*eba4d44aSLiu Zhe 0.000000001); 257*eba4d44aSLiu Zhe 258*eba4d44aSLiu Zhe // Verify the result on line 10 259*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 9)); 260*eba4d44aSLiu Zhe 261*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$9:$C$9)", 262*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 9)); 263*eba4d44aSLiu Zhe 264*eba4d44aSLiu Zhe assertEquals(3, SCUtil.getValueFromCell(currentsheet, 2, 9), 265*eba4d44aSLiu Zhe 0.000000001); 266*eba4d44aSLiu Zhe 267*eba4d44aSLiu Zhe // Verify the result on line 12 268*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 11)); 269*eba4d44aSLiu Zhe 270*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$11:$C$11)", 271*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 11)); 272*eba4d44aSLiu Zhe 273*eba4d44aSLiu Zhe assertEquals(4, SCUtil.getValueFromCell(currentsheet, 2, 11), 274*eba4d44aSLiu Zhe 0.000000001); 275*eba4d44aSLiu Zhe 276*eba4d44aSLiu Zhe // Verify the result on line 13 277*eba4d44aSLiu Zhe assertEquals("B Sum", SCUtil.getTextFromCell(currentsheet, 3, 12)); 278*eba4d44aSLiu Zhe 279*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$9:$B$12)", 280*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 12)); 281*eba4d44aSLiu Zhe 282*eba4d44aSLiu Zhe assertEquals(30, SCUtil.getValueFromCell(currentsheet, 1, 12), 283*eba4d44aSLiu Zhe 0.000000001); 284*eba4d44aSLiu Zhe 285*eba4d44aSLiu Zhe // Verify the result on line 15 286*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 14)); 287*eba4d44aSLiu Zhe 288*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$14:$C$14)", 289*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 14)); 290*eba4d44aSLiu Zhe 291*eba4d44aSLiu Zhe assertEquals(6, SCUtil.getValueFromCell(currentsheet, 2, 14), 292*eba4d44aSLiu Zhe 0.000000001); 293*eba4d44aSLiu Zhe 294*eba4d44aSLiu Zhe // Verify the result on line 17 295*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 16)); 296*eba4d44aSLiu Zhe 297*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$16:$C$16)", 298*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 16)); 299*eba4d44aSLiu Zhe 300*eba4d44aSLiu Zhe assertEquals(7, SCUtil.getValueFromCell(currentsheet, 2, 16), 301*eba4d44aSLiu Zhe 0.000000001); 302*eba4d44aSLiu Zhe 303*eba4d44aSLiu Zhe // Verify the result on line 18 304*eba4d44aSLiu Zhe assertEquals("C Sum", SCUtil.getTextFromCell(currentsheet, 3, 17)); 305*eba4d44aSLiu Zhe 306*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$14:$B$17)", 307*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 17)); 308*eba4d44aSLiu Zhe 309*eba4d44aSLiu Zhe assertEquals(50, SCUtil.getValueFromCell(currentsheet, 1, 17), 310*eba4d44aSLiu Zhe 0.000000001); 311*eba4d44aSLiu Zhe 312*eba4d44aSLiu Zhe // Verify the result on line 19 313*eba4d44aSLiu Zhe assertEquals("Grand Total", SCUtil.getTextFromCell(currentsheet, 3, 18)); 314*eba4d44aSLiu Zhe 315*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$18)", 316*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 18)); 317*eba4d44aSLiu Zhe 318*eba4d44aSLiu Zhe assertEquals(140, SCUtil.getValueFromCell(currentsheet, 1, 18), 319*eba4d44aSLiu Zhe 0.000000001); 320*eba4d44aSLiu Zhe 321*eba4d44aSLiu Zhe } 322*eba4d44aSLiu Zhe 323*eba4d44aSLiu Zhe @Test testForThirdGroup()324*eba4d44aSLiu Zhe public void testForThirdGroup() throws Exception { 325*eba4d44aSLiu Zhe scComponent = unoApp.newDocument("scalc"); 326*eba4d44aSLiu Zhe scDocument = SCUtil.getSCDocument(scComponent); 327*eba4d44aSLiu Zhe XSpreadsheet currentsheet = SCUtil.getCurrentSheet(scDocument); 328*eba4d44aSLiu Zhe XCellRange xdataRange = (XCellRange) UnoRuntime.queryInterface( 329*eba4d44aSLiu Zhe XCellRange.class, currentsheet); 330*eba4d44aSLiu Zhe XCellRange sourceRange = currentsheet.getCellRangeByName("A1:E8"); 331*eba4d44aSLiu Zhe XCellRangeData sourceData = (XCellRangeData) UnoRuntime.queryInterface( 332*eba4d44aSLiu Zhe XCellRangeData.class, sourceRange); 333*eba4d44aSLiu Zhe Object[][] Source = { { "Level", "Code", "No.", "Team", "Name" }, 334*eba4d44aSLiu Zhe { "BS", 20, 4, "B", "Elle" }, { "BS", 20, 6, "C", "Sweet" }, 335*eba4d44aSLiu Zhe { "BS", 20, 2, "A", "Chcomic" }, { "CS", 30, 5, "A", "Ally" }, 336*eba4d44aSLiu Zhe { "MS", 10, 1, "A", "Joker" }, { "MS", 10, 3, "B", "Kevin" }, 337*eba4d44aSLiu Zhe { "CS", 30, 7, "C", "Tom" } }; 338*eba4d44aSLiu Zhe sourceData.setDataArray(Source); 339*eba4d44aSLiu Zhe 340*eba4d44aSLiu Zhe // Create SubTotals 341*eba4d44aSLiu Zhe XSubTotalCalculatable xSub = (XSubTotalCalculatable) UnoRuntime 342*eba4d44aSLiu Zhe .queryInterface(XSubTotalCalculatable.class, sourceRange); 343*eba4d44aSLiu Zhe XSubTotalDescriptor xSubDesc = xSub.createSubTotalDescriptor(true); 344*eba4d44aSLiu Zhe SubTotalColumn[] aColumns = new SubTotalColumn[1]; 345*eba4d44aSLiu Zhe SubTotalColumn[] bColumns = new SubTotalColumn[1]; 346*eba4d44aSLiu Zhe SubTotalColumn[] cColumns = new SubTotalColumn[1]; 347*eba4d44aSLiu Zhe // calculate sum of Second column 348*eba4d44aSLiu Zhe aColumns[0] = new SubTotalColumn(); 349*eba4d44aSLiu Zhe aColumns[0].Column = 1; 350*eba4d44aSLiu Zhe aColumns[0].Function = GeneralFunction.SUM; 351*eba4d44aSLiu Zhe // group by 4th column 352*eba4d44aSLiu Zhe xSubDesc.addNew(aColumns, 3); 353*eba4d44aSLiu Zhe 354*eba4d44aSLiu Zhe // calculate sum of third column 355*eba4d44aSLiu Zhe bColumns[0] = new SubTotalColumn(); 356*eba4d44aSLiu Zhe bColumns[0].Column = 2; 357*eba4d44aSLiu Zhe bColumns[0].Function = GeneralFunction.SUM; 358*eba4d44aSLiu Zhe // group by second column 359*eba4d44aSLiu Zhe xSubDesc.addNew(bColumns, 1); 360*eba4d44aSLiu Zhe 361*eba4d44aSLiu Zhe // calculate sum of third column 362*eba4d44aSLiu Zhe cColumns[0] = new SubTotalColumn(); 363*eba4d44aSLiu Zhe cColumns[0].Column = 4; 364*eba4d44aSLiu Zhe cColumns[0].Function = GeneralFunction.COUNT; 365*eba4d44aSLiu Zhe // group by first column 366*eba4d44aSLiu Zhe xSubDesc.addNew(cColumns, 0); 367*eba4d44aSLiu Zhe xSub.applySubTotals(xSubDesc, true); 368*eba4d44aSLiu Zhe 369*eba4d44aSLiu Zhe // Verify the result on line 3 370*eba4d44aSLiu Zhe assertEquals("MS Count", SCUtil.getTextFromCell(currentsheet, 0, 2)); 371*eba4d44aSLiu Zhe 372*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$2:$E$2)", 373*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 2)); 374*eba4d44aSLiu Zhe 375*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 2), 376*eba4d44aSLiu Zhe 0.000000001); 377*eba4d44aSLiu Zhe 378*eba4d44aSLiu Zhe // Verify the result on line 4 379*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 3)); 380*eba4d44aSLiu Zhe 381*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$2:$C$3)", 382*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 3)); 383*eba4d44aSLiu Zhe 384*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 2, 3), 385*eba4d44aSLiu Zhe 0.000000001); 386*eba4d44aSLiu Zhe 387*eba4d44aSLiu Zhe // Verify the result on line 6 388*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 5)); 389*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$5:$E$5)", 390*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 5)); 391*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 5), 392*eba4d44aSLiu Zhe 0.000000001); 393*eba4d44aSLiu Zhe 394*eba4d44aSLiu Zhe // Verify the result on line7 395*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 6)); 396*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$5:$C$6)", 397*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 6)); 398*eba4d44aSLiu Zhe assertEquals(2, SCUtil.getValueFromCell(currentsheet, 2, 6), 399*eba4d44aSLiu Zhe 0.000000001); 400*eba4d44aSLiu Zhe 401*eba4d44aSLiu Zhe // Verify the result on line 9 402*eba4d44aSLiu Zhe assertEquals("CS Count", SCUtil.getTextFromCell(currentsheet, 0, 8)); 403*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$8:$E$8)", 404*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 8)); 405*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 8), 406*eba4d44aSLiu Zhe 0.000000001); 407*eba4d44aSLiu Zhe 408*eba4d44aSLiu Zhe // Verify the result on line 10 409*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 9)); 410*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$8:$C$9)", 411*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 9)); 412*eba4d44aSLiu Zhe assertEquals(5, SCUtil.getValueFromCell(currentsheet, 2, 9), 413*eba4d44aSLiu Zhe 0.000000001); 414*eba4d44aSLiu Zhe 415*eba4d44aSLiu Zhe // Verify the result on line 11 416*eba4d44aSLiu Zhe assertEquals("A Sum", SCUtil.getTextFromCell(currentsheet, 3, 10)); 417*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$10)", 418*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 10)); 419*eba4d44aSLiu Zhe assertEquals(60, SCUtil.getValueFromCell(currentsheet, 1, 10), 420*eba4d44aSLiu Zhe 0.000000001); 421*eba4d44aSLiu Zhe 422*eba4d44aSLiu Zhe // Verify the result on line 13 423*eba4d44aSLiu Zhe assertEquals("MS Count", SCUtil.getTextFromCell(currentsheet, 0, 12)); 424*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$12:$E$12)", 425*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 12)); 426*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 12), 427*eba4d44aSLiu Zhe 0.000000001); 428*eba4d44aSLiu Zhe 429*eba4d44aSLiu Zhe // Verify the result on line 14 430*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 13)); 431*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$12:$C$13)", 432*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 13)); 433*eba4d44aSLiu Zhe assertEquals(3, SCUtil.getValueFromCell(currentsheet, 2, 13), 434*eba4d44aSLiu Zhe 0.000000001); 435*eba4d44aSLiu Zhe 436*eba4d44aSLiu Zhe // Verify the result on line 16 437*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 15)); 438*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$15:$E$15)", 439*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 15)); 440*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 15), 441*eba4d44aSLiu Zhe 0.000000001); 442*eba4d44aSLiu Zhe 443*eba4d44aSLiu Zhe // Verify the result on line 17 444*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 16)); 445*eba4d44aSLiu Zhe 446*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$15:$C$16)", 447*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 16)); 448*eba4d44aSLiu Zhe 449*eba4d44aSLiu Zhe assertEquals(4, SCUtil.getValueFromCell(currentsheet, 2, 16), 450*eba4d44aSLiu Zhe 0.000000001); 451*eba4d44aSLiu Zhe 452*eba4d44aSLiu Zhe // Verify the result on line 18 453*eba4d44aSLiu Zhe assertEquals("B Sum", SCUtil.getTextFromCell(currentsheet, 3, 17)); 454*eba4d44aSLiu Zhe 455*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$12:$B$17)", 456*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 17)); 457*eba4d44aSLiu Zhe 458*eba4d44aSLiu Zhe assertEquals(30, SCUtil.getValueFromCell(currentsheet, 1, 17), 459*eba4d44aSLiu Zhe 0.000000001); 460*eba4d44aSLiu Zhe 461*eba4d44aSLiu Zhe // Verify the result on line 20 462*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 19)); 463*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$19:$E$19)", 464*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 19)); 465*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 19), 466*eba4d44aSLiu Zhe 0.000000001); 467*eba4d44aSLiu Zhe 468*eba4d44aSLiu Zhe // Verify the result on line 21 469*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 20)); 470*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$19:$C$20)", 471*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 20)); 472*eba4d44aSLiu Zhe assertEquals(6, SCUtil.getValueFromCell(currentsheet, 2, 20), 473*eba4d44aSLiu Zhe 0.000000001); 474*eba4d44aSLiu Zhe 475*eba4d44aSLiu Zhe // Verify the result on line 23 476*eba4d44aSLiu Zhe assertEquals("CS Count", SCUtil.getTextFromCell(currentsheet, 0, 22)); 477*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$22:$E$22)", 478*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 22)); 479*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 22), 480*eba4d44aSLiu Zhe 0.000000001); 481*eba4d44aSLiu Zhe 482*eba4d44aSLiu Zhe // Verify the result on line 24 483*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 23)); 484*eba4d44aSLiu Zhe 485*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$22:$C$23)", 486*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 23)); 487*eba4d44aSLiu Zhe assertEquals(7, SCUtil.getValueFromCell(currentsheet, 2, 23), 488*eba4d44aSLiu Zhe 0.000000001); 489*eba4d44aSLiu Zhe 490*eba4d44aSLiu Zhe // Verify the result on line 25 491*eba4d44aSLiu Zhe assertEquals("C Sum", SCUtil.getTextFromCell(currentsheet, 3, 24)); 492*eba4d44aSLiu Zhe 493*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$19:$B$24)", 494*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 24)); 495*eba4d44aSLiu Zhe assertEquals(50, SCUtil.getValueFromCell(currentsheet, 1, 24), 496*eba4d44aSLiu Zhe 0.000000001); 497*eba4d44aSLiu Zhe 498*eba4d44aSLiu Zhe // Verify the result on line 26 499*eba4d44aSLiu Zhe assertEquals("Grand Total", SCUtil.getTextFromCell(currentsheet, 3, 25)); 500*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$25)", 501*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 25)); 502*eba4d44aSLiu Zhe assertEquals(140, SCUtil.getValueFromCell(currentsheet, 1, 25), 503*eba4d44aSLiu Zhe 0.000000001); 504*eba4d44aSLiu Zhe 505*eba4d44aSLiu Zhe // Save the file and reload it 506*eba4d44aSLiu Zhe SCUtil.saveFileAs(scComponent, "SubTotalsForGroup", "ods"); 507*eba4d44aSLiu Zhe XSpreadsheetDocument scDocumentTemp = SCUtil.reloadFile(unoApp, 508*eba4d44aSLiu Zhe scDocument, "SubTotalsForGroup.ods"); 509*eba4d44aSLiu Zhe scDocument = scDocumentTemp; 510*eba4d44aSLiu Zhe currentsheet = SCUtil.getCurrentSheet(scDocument); 511*eba4d44aSLiu Zhe 512*eba4d44aSLiu Zhe // verify it again 513*eba4d44aSLiu Zhe // Verify the result on line 3 514*eba4d44aSLiu Zhe assertEquals("MS Count", SCUtil.getTextFromCell(currentsheet, 0, 2)); 515*eba4d44aSLiu Zhe 516*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$2:$E$2)", 517*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 2)); 518*eba4d44aSLiu Zhe 519*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 2), 520*eba4d44aSLiu Zhe 0.000000001); 521*eba4d44aSLiu Zhe 522*eba4d44aSLiu Zhe // Verify the result on line 4 523*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 3)); 524*eba4d44aSLiu Zhe 525*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$2:$C$3)", 526*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 3)); 527*eba4d44aSLiu Zhe 528*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 2, 3), 529*eba4d44aSLiu Zhe 0.000000001); 530*eba4d44aSLiu Zhe 531*eba4d44aSLiu Zhe // Verify the result on line 6 532*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 5)); 533*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$5:$E$5)", 534*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 5)); 535*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 5), 536*eba4d44aSLiu Zhe 0.000000001); 537*eba4d44aSLiu Zhe 538*eba4d44aSLiu Zhe // Verify the result on line7 539*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 6)); 540*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$5:$C$6)", 541*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 6)); 542*eba4d44aSLiu Zhe assertEquals(2, SCUtil.getValueFromCell(currentsheet, 2, 6), 543*eba4d44aSLiu Zhe 0.000000001); 544*eba4d44aSLiu Zhe 545*eba4d44aSLiu Zhe // Verify the result on line 9 546*eba4d44aSLiu Zhe assertEquals("CS Count", SCUtil.getTextFromCell(currentsheet, 0, 8)); 547*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$8:$E$8)", 548*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 8)); 549*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 8), 550*eba4d44aSLiu Zhe 0.000000001); 551*eba4d44aSLiu Zhe 552*eba4d44aSLiu Zhe // Verify the result on line 10 553*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 9)); 554*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$8:$C$9)", 555*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 9)); 556*eba4d44aSLiu Zhe assertEquals(5, SCUtil.getValueFromCell(currentsheet, 2, 9), 557*eba4d44aSLiu Zhe 0.000000001); 558*eba4d44aSLiu Zhe 559*eba4d44aSLiu Zhe // Verify the result on line 11 560*eba4d44aSLiu Zhe assertEquals("A Sum", SCUtil.getTextFromCell(currentsheet, 3, 10)); 561*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$10)", 562*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 10)); 563*eba4d44aSLiu Zhe assertEquals(60, SCUtil.getValueFromCell(currentsheet, 1, 10), 564*eba4d44aSLiu Zhe 0.000000001); 565*eba4d44aSLiu Zhe 566*eba4d44aSLiu Zhe // Verify the result on line 13 567*eba4d44aSLiu Zhe assertEquals("MS Count", SCUtil.getTextFromCell(currentsheet, 0, 12)); 568*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$12:$E$12)", 569*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 12)); 570*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 12), 571*eba4d44aSLiu Zhe 0.000000001); 572*eba4d44aSLiu Zhe 573*eba4d44aSLiu Zhe // Verify the result on line 14 574*eba4d44aSLiu Zhe assertEquals("10 Sum", SCUtil.getTextFromCell(currentsheet, 1, 13)); 575*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$12:$C$13)", 576*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 13)); 577*eba4d44aSLiu Zhe assertEquals(3, SCUtil.getValueFromCell(currentsheet, 2, 13), 578*eba4d44aSLiu Zhe 0.000000001); 579*eba4d44aSLiu Zhe 580*eba4d44aSLiu Zhe // Verify the result on line 16 581*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 15)); 582*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$15:$E$15)", 583*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 15)); 584*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 15), 585*eba4d44aSLiu Zhe 0.000000001); 586*eba4d44aSLiu Zhe 587*eba4d44aSLiu Zhe // Verify the result on line 17 588*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 16)); 589*eba4d44aSLiu Zhe 590*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$15:$C$16)", 591*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 16)); 592*eba4d44aSLiu Zhe 593*eba4d44aSLiu Zhe assertEquals(4, SCUtil.getValueFromCell(currentsheet, 2, 16), 594*eba4d44aSLiu Zhe 0.000000001); 595*eba4d44aSLiu Zhe 596*eba4d44aSLiu Zhe // Verify the result on line 18 597*eba4d44aSLiu Zhe assertEquals("B Sum", SCUtil.getTextFromCell(currentsheet, 3, 17)); 598*eba4d44aSLiu Zhe 599*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$12:$B$17)", 600*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 17)); 601*eba4d44aSLiu Zhe 602*eba4d44aSLiu Zhe assertEquals(30, SCUtil.getValueFromCell(currentsheet, 1, 17), 603*eba4d44aSLiu Zhe 0.000000001); 604*eba4d44aSLiu Zhe 605*eba4d44aSLiu Zhe // Verify the result on line 20 606*eba4d44aSLiu Zhe assertEquals("BS Count", SCUtil.getTextFromCell(currentsheet, 0, 19)); 607*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$19:$E$19)", 608*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 19)); 609*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 19), 610*eba4d44aSLiu Zhe 0.000000001); 611*eba4d44aSLiu Zhe 612*eba4d44aSLiu Zhe // Verify the result on line 21 613*eba4d44aSLiu Zhe assertEquals("20 Sum", SCUtil.getTextFromCell(currentsheet, 1, 20)); 614*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$19:$C$20)", 615*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 20)); 616*eba4d44aSLiu Zhe assertEquals(6, SCUtil.getValueFromCell(currentsheet, 2, 20), 617*eba4d44aSLiu Zhe 0.000000001); 618*eba4d44aSLiu Zhe 619*eba4d44aSLiu Zhe // Verify the result on line 23 620*eba4d44aSLiu Zhe assertEquals("CS Count", SCUtil.getTextFromCell(currentsheet, 0, 22)); 621*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(3;$E$22:$E$22)", 622*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 4, 22)); 623*eba4d44aSLiu Zhe assertEquals(1, SCUtil.getValueFromCell(currentsheet, 4, 22), 624*eba4d44aSLiu Zhe 0.000000001); 625*eba4d44aSLiu Zhe 626*eba4d44aSLiu Zhe // Verify the result on line 24 627*eba4d44aSLiu Zhe assertEquals("30 Sum", SCUtil.getTextFromCell(currentsheet, 1, 23)); 628*eba4d44aSLiu Zhe 629*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$C$22:$C$23)", 630*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 2, 23)); 631*eba4d44aSLiu Zhe assertEquals(7, SCUtil.getValueFromCell(currentsheet, 2, 23), 632*eba4d44aSLiu Zhe 0.000000001); 633*eba4d44aSLiu Zhe 634*eba4d44aSLiu Zhe // Verify the result on line 25 635*eba4d44aSLiu Zhe assertEquals("C Sum", SCUtil.getTextFromCell(currentsheet, 3, 24)); 636*eba4d44aSLiu Zhe 637*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$19:$B$24)", 638*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 24)); 639*eba4d44aSLiu Zhe assertEquals(50, SCUtil.getValueFromCell(currentsheet, 1, 24), 640*eba4d44aSLiu Zhe 0.000000001); 641*eba4d44aSLiu Zhe 642*eba4d44aSLiu Zhe // Verify the result on line 26 643*eba4d44aSLiu Zhe assertEquals("Grand Total", SCUtil.getTextFromCell(currentsheet, 3, 25)); 644*eba4d44aSLiu Zhe assertEquals("=SUBTOTAL(9;$B$2:$B$25)", 645*eba4d44aSLiu Zhe SCUtil.getFormulaFromCell(currentsheet, 1, 25)); 646*eba4d44aSLiu Zhe assertEquals(140, SCUtil.getValueFromCell(currentsheet, 1, 25), 647*eba4d44aSLiu Zhe 0.000000001); 648*eba4d44aSLiu Zhe 649*eba4d44aSLiu Zhe } 650*eba4d44aSLiu Zhe } 651