Author: nick
Date: Mon Oct 20 23:22:02 2014
New Revision: 1633257

URL: http://svn.apache.org/r1633257
Log:
Add disabled unit tests for bug #46670 - failing on both HSSF and XSSF, but for 
different reasons

Added:
    poi/trunk/test-data/spreadsheet/46670_http.xls   (with props)
    poi/trunk/test-data/spreadsheet/46670_local.xls   (with props)
    poi/trunk/test-data/spreadsheet/46670_ref_airline.xls   (with props)
Modified:
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
    
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1633257&r1=1633256&r2=1633257&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Mon Oct 
20 23:22:02 2014
@@ -2624,4 +2624,54 @@ public final class TestBugs extends Base
         assertEquals("International Communication Services SA", 
s.getRow(2).getCell(0).getStringCellValue());
         assertEquals("Saudi Arabia-Riyadh", 
s.getRow(210).getCell(0).getStringCellValue());
     }
+    
+    /**
+     * Read, write, read for formulas point to cells in other files.
+     * See {@link #bug46670()} for the main test, this just
+     *  covers reading an existing file and checking it.
+     * TODO Fix this so that it works - formulas are ending up as
+     *  #REF when being changed
+     */
+//    @Test
+    public void bug46670_existing() {
+        HSSFWorkbook wb;
+        Sheet s;
+        Cell c;
+        
+        // Expected values
+        String refLocal = "'[refs/airport.xls]Sheet1'!$A$2";
+        String refHttp  = 
"'[9http://www.principlesofeconometrics.com/excel/airline.xls]Sheet1'!$A$2";
+        
+        // Check we can read them correctly
+        wb = openSample("46670_local.xls");
+        s = wb.getSheetAt(0);
+        assertEquals(refLocal, s.getRow(0).getCell(0).getCellFormula());
+        
+        wb = openSample("46670_http.xls");
+        s = wb.getSheetAt(0);
+        assertEquals(refHttp, s.getRow(0).getCell(0).getCellFormula());
+        
+        // Now try to set them to the same values, and ensure that
+        //  they end up as they did before, even with a save and re-load
+        wb = openSample("46670_local.xls");
+        s = wb.getSheetAt(0);
+        c = s.getRow(0).getCell(0);
+        c.setCellFormula(refLocal);
+        assertEquals(refLocal, c.getCellFormula());
+        
+        wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+        s = wb.getSheetAt(0);
+        assertEquals(refLocal, s.getRow(0).getCell(0).getCellFormula());
+
+        
+        wb = openSample("46670_http.xls");
+        s = wb.getSheetAt(0);
+        c = s.getRow(0).getCell(0);
+        c.setCellFormula(refHttp);
+        assertEquals(refHttp, c.getCellFormula());
+        
+        wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+        s = wb.getSheetAt(0);
+        assertEquals(refHttp, s.getRow(0).getCell(0).getCellFormula());
+    }
 }

Modified: 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1633257&r1=1633256&r2=1633257&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java 
(original)
+++ 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java 
Mon Oct 20 23:22:02 2014
@@ -21,6 +21,10 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.PaneInformation;
 import org.apache.poi.ss.ITestDataProvider;
 import org.apache.poi.ss.SpreadsheetVersion;
@@ -673,4 +677,83 @@ public abstract class BaseTestBugzillaIs
         wb.getCreationHelper().createFormulaEvaluator().evaluateFormulaCell(c);
         return s.getRow(c.getRowIndex()).getCell(c.getColumnIndex());
     }
+    
+    /**
+     * Should be able to write then read formulas with references
+     *  to cells in other files, eg '[refs/airport.xls]Sheet1'!$A$2
+     *  or 'http://192.168.1.2/[blank.xls]Sheet1'!$A$1 .
+     * Additionally, if a reference to that file is provided, it should
+     *  be possible to evaluate them too
+     * TODO Fix this to evaluate for XSSF
+     * TODO Fix this to work at all for HSSF
+     */
+//    @Test
+    public void bug46670() throws Exception {
+        Workbook wb = _testDataProvider.createWorkbook();
+        Sheet s = wb.createSheet();
+        Row r1 = s.createRow(0);
+        
+        
+        // References to try
+        String ext = "xls";
+        if (! (wb instanceof HSSFWorkbook)) ext += "x";
+        String refLocal = "'[test."+ext+"]Sheet1'!$A$2";
+        String refHttp  = "'[http://example.com/test."+ext+"]Sheet1'!$A$2";
+        String otherCellText = "In Another Workbook";
+
+        
+        // Create the references
+        Cell c1 = r1.createCell(0, Cell.CELL_TYPE_FORMULA);
+        c1.setCellFormula(refLocal);
+        
+        Cell c2 = r1.createCell(1, Cell.CELL_TYPE_FORMULA);
+        c2.setCellFormula(refHttp);
+        
+        
+        // Check they were set correctly
+        assertEquals(refLocal, c1.getCellFormula());
+        assertEquals(refHttp,  c2.getCellFormula());
+        
+        
+        // Reload, and ensure they were serialised and read correctly
+        wb = _testDataProvider.writeOutAndReadBack(wb);
+        s = wb.getSheetAt(0);
+        r1 = s.getRow(0);
+        
+        c1 = r1.getCell(0);
+        c2 = r1.getCell(1);
+        assertEquals(refLocal, c1.getCellFormula());
+        assertEquals(refHttp,  c2.getCellFormula());
+
+        
+        // Try to evalutate, without giving a way to get at the other file
+        try {
+            evaluateCell(wb, c1);
+            fail("Shouldn't be able to evaluate without the other file");
+        } catch (Exception e) {}
+        try {
+            evaluateCell(wb, c2);
+            fail("Shouldn't be able to evaluate without the other file");
+        } catch (Exception e) {}
+        
+        
+        // Set up references to the other file
+        Workbook wb2 = _testDataProvider.createWorkbook();
+        
wb2.createSheet().createRow(1).createCell(0).setCellValue(otherCellText);
+        
+        Map<String,FormulaEvaluator> evaluators = new HashMap<String, 
FormulaEvaluator>();
+        evaluators.put(refLocal, 
wb2.getCreationHelper().createFormulaEvaluator());
+        evaluators.put(refHttp,  
wb2.getCreationHelper().createFormulaEvaluator());
+        
+        FormulaEvaluator evaluator = 
wb.getCreationHelper().createFormulaEvaluator();
+        evaluator.setupReferencedWorkbooks(evaluators);
+        
+        
+        // Try to evaluate, with the other file
+        evaluator.evaluateFormulaCell(c1);
+        evaluator.evaluateFormulaCell(c2);
+        
+        assertEquals(otherCellText, c1.getStringCellValue());
+        assertEquals(otherCellText, c2.getStringCellValue());
+    }
 }

Added: poi/trunk/test-data/spreadsheet/46670_http.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/46670_http.xls?rev=1633257&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/46670_http.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/test-data/spreadsheet/46670_local.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/46670_local.xls?rev=1633257&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/46670_local.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: poi/trunk/test-data/spreadsheet/46670_ref_airline.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/46670_ref_airline.xls?rev=1633257&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/46670_ref_airline.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to