PLSQL/Execution/test/unit/src/org/netbeans/modules/plsql/execution/PlsqlExecutableBlocksMakerTest.java
author Subhashini Sooriarachchi <subslk@netbeans.org>
Mon, 12 Aug 2013 11:26:54 +0530
changeset 464 e10b2e8563fc
parent 452 b2411fb23674
permissions -rw-r--r--
EADS-3749 encountering issues with the displaying of code in Developer Studio when code folding is enabled
subslk@452
     1
/*
subslk@452
     2
 * To change this template, choose Tools | Templates
subslk@452
     3
 * and open the template in the editor.
subslk@452
     4
 */
subslk@452
     5
package org.netbeans.modules.plsql.execution;
subslk@452
     6
subslk@452
     7
import java.io.BufferedReader;
subslk@452
     8
import java.io.File;
subslk@452
     9
import java.io.FileInputStream;
subslk@452
    10
import java.io.IOException;
subslk@452
    11
import java.io.InputStream;
subslk@452
    12
import java.io.InputStreamReader;
subslk@452
    13
import java.io.OutputStream;
subslk@452
    14
import java.util.List;
subslk@452
    15
import javax.swing.text.BadLocationException;
subslk@452
    16
import javax.swing.text.Document;
subslk@452
    17
import org.junit.Test;
subslk@452
    18
import static org.junit.Assert.*;
subslk@452
    19
import org.junit.Before;
subslk@452
    20
import org.netbeans.api.lexer.Language;
subslk@452
    21
import org.netbeans.api.lexer.TokenHierarchy;
subslk@452
    22
import org.netbeans.api.lexer.TokenSequence;
subslk@452
    23
import org.netbeans.junit.NbTestCase;
subslk@452
    24
import org.netbeans.modules.plsql.lexer.PlsqlBlockFactory;
subslk@452
    25
import org.netbeans.modules.plsql.lexer.PlsqlTokenId;
subslk@452
    26
import org.netbeans.modules.plsqlsupport.db.PlsqlExecutableObject;
subslk@452
    27
import org.openide.cookies.EditorCookie;
subslk@452
    28
import org.openide.filesystems.FileObject;
subslk@452
    29
import org.openide.filesystems.FileSystem;
subslk@452
    30
import org.openide.filesystems.FileUtil;
subslk@452
    31
import org.openide.loaders.DataFolder;
subslk@452
    32
import org.openide.loaders.DataObject;
subslk@452
    33
import org.openide.util.Exceptions;
subslk@452
    34
import org.openide.util.Task;
subslk@452
    35
subslk@452
    36
/**
subslk@452
    37
 *
subslk@452
    38
 * @author subslk
subslk@452
    39
 */
subslk@452
    40
public class PlsqlExecutableBlocksMakerTest extends TestRecordPlayer {
subslk@452
    41
subslk@452
    42
    private static FileSystem fs = null;
subslk@452
    43
subslk@452
    44
    public PlsqlExecutableBlocksMakerTest(String name) {
subslk@452
    45
        super(name);
subslk@452
    46
    }
subslk@452
    47
    
subslk@452
    48
    @Before
subslk@452
    49
    public void setUp() {
subslk@452
    50
        fs = FileUtil.createMemoryFileSystem();
subslk@452
    51
        assertNotNull(fs);
subslk@452
    52
    }
subslk@452
    53
subslk@452
    54
    /**
subslk@452
    55
     * Test of makeExceutableObjects method, of class PlsqlExecutableBlocksMaker.
subslk@452
    56
     */
subslk@452
    57
    @Test
subslk@452
    58
    public void testMakeExceutableObjects() throws IOException {
subslk@452
    59
subslk@452
    60
        System.out.println(" Test Exceutable Objects creation");
subslk@452
    61
subslk@452
    62
        final String plsqlFileName = "Actor.apy";
subslk@452
    63
        Document doc = null;
subslk@452
    64
        FileObject fileObject = null;
subslk@452
    65
        try {
subslk@452
    66
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
    67
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
    68
subslk@452
    69
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
    70
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
    71
            
subslk@452
    72
            int size = makeExceutableObjects.size();           
subslk@452
    73
            assertEquals(31, size);
subslk@452
    74
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
    75
            
subslk@452
    76
        } catch (BadLocationException ex) {
subslk@452
    77
            Exceptions.printStackTrace(ex);
subslk@452
    78
        } catch (IOException ex) {
subslk@452
    79
            Exceptions.printStackTrace(ex);
subslk@452
    80
        } finally {
subslk@452
    81
            if (fileObject != null) {
subslk@452
    82
                fileObject.delete();
subslk@452
    83
            }
subslk@452
    84
        }
subslk@452
    85
    }
subslk@452
    86
    
subslk@452
    87
    @Test
subslk@452
    88
    public void test1() throws IOException {
subslk@452
    89
subslk@452
    90
        System.out.println("test 1 - api file");
subslk@452
    91
subslk@452
    92
        final String plsqlFileName = "FndEvent.api";
subslk@452
    93
        Document doc = null;
subslk@452
    94
        FileObject fileObject = null;
subslk@452
    95
        try {
subslk@452
    96
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
    97
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
    98
subslk@452
    99
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   100
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   101
            
subslk@464
   102
            int size = makeExceutableObjects.size(); 
subslk@452
   103
            assertEquals(12, size);
subslk@452
   104
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   105
            
subslk@452
   106
        } catch (BadLocationException ex) {
subslk@452
   107
            Exceptions.printStackTrace(ex);
subslk@452
   108
        } catch (IOException ex) {
subslk@452
   109
            Exceptions.printStackTrace(ex);
subslk@452
   110
        } finally {
subslk@452
   111
            if (fileObject != null) {
subslk@452
   112
                fileObject.delete();
subslk@452
   113
            }
subslk@452
   114
        }
subslk@452
   115
    }
subslk@452
   116
subslk@452
   117
    @Test
subslk@452
   118
    public void test2() throws IOException {
subslk@452
   119
subslk@452
   120
        System.out.println("test 2 - apy file");
subslk@452
   121
subslk@452
   122
        final String plsqlFileName = "FndEvent.apy";
subslk@452
   123
        Document doc = null;
subslk@452
   124
        FileObject fileObject = null;
subslk@452
   125
        try {
subslk@452
   126
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
   127
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
   128
subslk@452
   129
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   130
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   131
            
subslk@452
   132
            int size = makeExceutableObjects.size();           
subslk@452
   133
            assertEquals(41, size);
subslk@452
   134
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   135
            
subslk@452
   136
        } catch (BadLocationException ex) {
subslk@452
   137
            Exceptions.printStackTrace(ex);
subslk@452
   138
        } catch (IOException ex) {
subslk@452
   139
            Exceptions.printStackTrace(ex);
subslk@452
   140
        } finally {
subslk@452
   141
            if (fileObject != null) {
subslk@452
   142
                fileObject.delete();
subslk@452
   143
            }
subslk@452
   144
        }
subslk@452
   145
    }
subslk@452
   146
    
subslk@452
   147
    @Test
subslk@452
   148
    public void test3() throws IOException {
subslk@452
   149
subslk@452
   150
        System.out.println("test 3 - rdf file");
subslk@452
   151
subslk@452
   152
        final String plsqlFileName = "FndSecurityPerObject.rdf";
subslk@452
   153
        Document doc = null;
subslk@452
   154
        FileObject fileObject = null;
subslk@452
   155
        try {
subslk@452
   156
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
   157
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
   158
subslk@452
   159
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   160
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   161
            
subslk@452
   162
            int size = makeExceutableObjects.size();           
subslk@452
   163
            assertEquals(37, size);
subslk@452
   164
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   165
            
subslk@452
   166
        } catch (BadLocationException ex) {
subslk@452
   167
            Exceptions.printStackTrace(ex);
subslk@452
   168
        } catch (IOException ex) {
subslk@452
   169
            Exceptions.printStackTrace(ex);
subslk@452
   170
        } finally {
subslk@452
   171
            if (fileObject != null) {
subslk@452
   172
                fileObject.delete();
subslk@452
   173
            }
subslk@452
   174
        }
subslk@452
   175
    }
subslk@452
   176
    
subslk@452
   177
    @Test
subslk@452
   178
    public void test4() throws IOException {
subslk@452
   179
subslk@452
   180
        System.out.println("test 4 - ins file");
subslk@452
   181
subslk@452
   182
        final String plsqlFileName = "FndSetting.ins";
subslk@452
   183
        Document doc = null;
subslk@452
   184
        FileObject fileObject = null;
subslk@452
   185
        try {
subslk@452
   186
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
   187
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
   188
subslk@452
   189
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   190
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   191
            
subslk@452
   192
            int size = makeExceutableObjects.size();           
subslk@452
   193
            assertEquals(7, size);
subslk@452
   194
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   195
            
subslk@452
   196
        } catch (BadLocationException ex) {
subslk@452
   197
            Exceptions.printStackTrace(ex);
subslk@452
   198
        } catch (IOException ex) {
subslk@452
   199
            Exceptions.printStackTrace(ex);
subslk@452
   200
        } finally {
subslk@452
   201
            if (fileObject != null) {
subslk@452
   202
                fileObject.delete();
subslk@452
   203
            }
subslk@452
   204
        }
subslk@452
   205
    }
subslk@452
   206
    
subslk@452
   207
    @Test
subslk@452
   208
    public void test5() throws IOException {
subslk@452
   209
subslk@452
   210
        System.out.println("test 5 - sql file");
subslk@452
   211
subslk@452
   212
        final String plsqlFileName = "fndbasdr.sql";
subslk@452
   213
        Document doc = null;
subslk@452
   214
        FileObject fileObject = null;
subslk@452
   215
        try {
subslk@452
   216
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
   217
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
   218
subslk@452
   219
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   220
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   221
            
subslk@452
   222
            int size = makeExceutableObjects.size();           
subslk@464
   223
            assertEquals(81, size);
subslk@452
   224
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   225
            
subslk@452
   226
        } catch (BadLocationException ex) {
subslk@452
   227
            Exceptions.printStackTrace(ex);
subslk@452
   228
        } catch (IOException ex) {
subslk@452
   229
            Exceptions.printStackTrace(ex);
subslk@452
   230
        } finally {
subslk@452
   231
            if (fileObject != null) {
subslk@452
   232
                fileObject.delete();
subslk@452
   233
            }
subslk@452
   234
        }
subslk@452
   235
    }
subslk@452
   236
    
subslk@452
   237
    @Test
subslk@452
   238
    public void test6() throws IOException {
subslk@452
   239
subslk@452
   240
        System.out.println("test 6 - cdb file");
subslk@452
   241
subslk@452
   242
        final String plsqlFileName = "event.cdb";
subslk@452
   243
        Document doc = null;
subslk@452
   244
        FileObject fileObject = null;
subslk@452
   245
        try {
subslk@452
   246
            fileObject = fs.getRoot().createData(plsqlFileName);
subslk@452
   247
            doc = getDocument(fileObject, plsqlFileName);
subslk@452
   248
subslk@452
   249
            PlsqlExecutableBlocksMaker instance = new PlsqlExecutableBlocksMaker(doc);
subslk@452
   250
            List<PlsqlExecutableObject> makeExceutableObjects = instance.makeExceutableObjects();
subslk@452
   251
            
subslk@452
   252
            int size = makeExceutableObjects.size();           
subslk@452
   253
            assertEquals(9, size);
subslk@452
   254
            processExecutableBLocksBlocks(plsqlFileName,makeExceutableObjects);
subslk@452
   255
            
subslk@452
   256
        } catch (BadLocationException ex) {
subslk@452
   257
            Exceptions.printStackTrace(ex);
subslk@452
   258
        } catch (IOException ex) {
subslk@452
   259
            Exceptions.printStackTrace(ex);
subslk@452
   260
        } finally {
subslk@452
   261
            if (fileObject != null) {
subslk@452
   262
                fileObject.delete();
subslk@452
   263
            }
subslk@452
   264
        }
subslk@452
   265
    }
subslk@452
   266
    
subslk@452
   267
    private Document getDocument(FileObject fileObj, String fileName) throws IOException, BadLocationException {
subslk@452
   268
        InputStream inputStream = new FileInputStream(new File(getDataDir(), fileName));
subslk@452
   269
        InputStreamReader indexReader = new InputStreamReader(inputStream);
subslk@452
   270
        BufferedReader input = new BufferedReader(indexReader);
subslk@452
   271
        String content = "";
subslk@452
   272
        while (input.ready()) {
subslk@452
   273
            content = content + input.readLine() + "\n";
subslk@452
   274
        }
subslk@452
   275
        input.close();
subslk@452
   276
        inputStream.close();
subslk@452
   277
        indexReader.close();
subslk@452
   278
        writeFile(content, fileObj);
subslk@452
   279
subslk@452
   280
        DataObject dataObj = DataFolder.find(fileObj);
subslk@452
   281
        EditorCookie ec = dataObj.getLookup().lookup(EditorCookie.class);
subslk@452
   282
        assertNotNull(ec);
subslk@452
   283
        Task task = ec.prepareDocument();
subslk@452
   284
        task.waitFinished();
subslk@452
   285
        PlsqlBlockFactory blockFac = dataObj.getLookup().lookup(PlsqlBlockFactory.class);
subslk@452
   286
        assertNotNull(blockFac);
subslk@452
   287
        Document doc = ec.getDocument();
subslk@452
   288
        assertNotNull(doc);
subslk@452
   289
        doc.putProperty(Language.class, PlsqlTokenId.language());
subslk@452
   290
subslk@452
   291
        TokenHierarchy tokenHier = TokenHierarchy.get(doc);
subslk@452
   292
        assertNotNull(tokenHier);
subslk@452
   293
        TokenSequence<PlsqlTokenId> ts = tokenHier.tokenSequence(PlsqlTokenId.language());
subslk@452
   294
        assertNotNull(ts);
subslk@452
   295
        blockFac.initHierarchy(doc);
subslk@452
   296
subslk@452
   297
        return doc;
subslk@452
   298
subslk@452
   299
    }
subslk@452
   300
subslk@452
   301
    private void writeFile(String content, FileObject file) throws IOException {
subslk@452
   302
        OutputStream os = file.getOutputStream();
subslk@452
   303
        os.write(content.getBytes("UTF-8"));
subslk@452
   304
        os.close();
subslk@452
   305
    }
subslk@452
   306
}