aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java
blob: 3273bc03a2e3d3c6cf89662d9a47ae3d6f831c81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
==================================================================== */
package org.apache.poi.xssf.usermodel;

import junit.framework.TestCase;
import org.apache.poi.xssf.XSSFTestDataSamples;

/**
 * @author Yegor Kozlov
 */
public class TestXSSFName extends TestCase {

    public void testCreate(){
        // Create a new workbook
        XSSFWorkbook wb = new XSSFWorkbook();

        XSSFName name1 = wb.createName();
        name1.setNameName("testOne");

        //setting a duplicate name should throw IllegalArgumentException
        XSSFName name2 = wb.createName();
        try {
            name2.setNameName("testOne");
            fail("expected exception");
        } catch (IllegalArgumentException e){
            assertEquals("The workbook already contains this name: testOne", e.getMessage());
        }

        name2.setNameName("testTwo");

        String ref1 = "Test1!$A$1:$B$1";
        name1.setReference(ref1);
        assertEquals(ref1, name1.getReference());
        assertEquals("Test1", name1.getSheetName());

        String ref2 = "'Testing Named Ranges'!$A$1:$B$1";
        name1.setReference(ref2);
        //XSSFName#setReference stores the reference in canonical form and puts the sheet name in single quotes
        assertEquals("'Testing Named Ranges'!$A$1:$B$1", name1.getReference());
        assertEquals("Testing Named Ranges", name1.getSheetName());

        assertEquals(-1, name1.getLocalSheetId());
        name1.setLocalSheetId(1);
        assertEquals(1, name1.getLocalSheetId());
    }

    public void testUnicodeNamedRange() {
        XSSFWorkbook workBook = new XSSFWorkbook();
        workBook.createSheet("Test");
        XSSFName name = workBook.createName();
        name.setNameName("\u03B1");
        name.setReference("Test!$D$3:$E$8");


        XSSFWorkbook workBook2 = XSSFTestDataSamples.writeOutAndReadBack(workBook);
        XSSFName name2 = workBook2.getNameAt(0);

        assertEquals("\u03B1", name2.getNameName());
        assertEquals("Test!$D$3:$E$8", name2.getReference());
    }

    public void testAddRemove() {
        XSSFWorkbook wb = new XSSFWorkbook();
        assertEquals(0, wb.getNumberOfNames());
        XSSFName name1 = wb.createName();
        name1.setNameName("name1");
        assertEquals(1, wb.getNumberOfNames());

        XSSFName name2 = wb.createName();
        name2.setNameName("name2");
        assertEquals(2, wb.getNumberOfNames());

        XSSFName name3 = wb.createName();
        name3.setNameName("name3");
        assertEquals(3, wb.getNumberOfNames());

        wb.removeName("name2");
        assertEquals(2, wb.getNumberOfNames());

        wb.removeName(0);
        assertEquals(1, wb.getNumberOfNames());
    }
}