Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.lib / org.gvsig.scripting.lib.api / src / test / java / org / gvsig / scripting / TestScript.java @ 441

History | View | Annotate | Download (5.56 KB)

1
package org.gvsig.scripting;
2

    
3
import java.io.File;
4
import java.util.Iterator;
5
import java.util.List;
6

    
7
import junit.framework.Assert;
8

    
9
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
10

    
11
public abstract class TestScript extends AbstractLibraryAutoInitTestCase {
12

    
13
        protected ScriptingManager manager;
14
        
15
        @Override
16
        protected void doSetUp() throws Exception {
17
                ScriptingLocator locator = new ScriptingLocator();
18
                Assert.assertNotNull(locator);
19
                manager = ScriptingLocator.getManager();
20
                Assert.assertNotNull(manager);
21
        }
22
        
23
        public void setWorkingFolder(){
24
                File file =new File(this.getClass().getClassLoader().getResource("org/gvsig/scripting/home").getFile());
25
                if(file.exists()){
26
                        file.mkdir();
27
                }
28
//                FIXME: hay que sustituirlo por manager.setHomeFolder(home) 
29
//                manager.setRootUserFolder(file.getAbsolutePath());
30
        }
31
        
32
        public void deleteFolderContent(ScriptingFolder folder){
33
                List<ScriptingUnit> units = folder.getUnits();
34
        Iterator<ScriptingUnit> it = units.iterator();
35
                while(it.hasNext()){
36
                        ScriptingUnit unit = it.next();
37
                        if(unit instanceof ScriptingFolder){
38
                                deleteFolderContent((ScriptingFolder)unit);
39
                                folder.remove(unit);
40
                        }else{
41
                                folder.remove(unit);
42
                        }
43
                }
44
        }
45
        
46
        public void deleteWorkingFolderContent(){
47
                setWorkingFolder();
48
                ScriptingFolder folder = manager.getUserFolder();
49
                deleteFolderContent(folder);
50
        }
51
        
52
        public File getFile(ScriptingFolder folder, String name){
53
                return new File(folder.getFile(),name);
54
        }
55
        
56
        public void checkFile(ScriptingFolder folder, String fName){
57
                File fscript = getFile(folder, fName);
58
                Assert.assertTrue(fscript.exists());
59
        }
60
        
61
        public void checkScriptDefaultValues(ScriptingScript script){
62
                Assert.assertEquals(manager.getUserFolder().getFile().getAbsolutePath(), script.getParent().getFile().getAbsolutePath());
63
                
64
                Assert.assertEquals("test_script", script.getId());
65
                Assert.assertEquals("test_script", script.getName());
66
                Assert.assertEquals("python", script.getLangName());
67
                Assert.assertEquals("main", script.getMainName());
68
        }
69
        
70
        public void checkScriptNewValues(ScriptingScript script){
71
                Assert.assertEquals("test_script", script.getId());
72
                Assert.assertEquals("TestScript", script.getName());
73
                Assert.assertEquals("Tests sobre scripts", script.getDescription());
74
                Assert.assertEquals("python", script.getLangName());
75
                Assert.assertEquals("main", script.getMainName());
76
                Assert.assertEquals("creator", script.getCreatedBy());
77
                Assert.assertEquals("v1.0", script.getVersion());
78
                Assert.assertEquals("def main():\n  return 'hola mundo'\n",script.getCode());
79
        }
80
        
81
        public void testCreation(){
82
                setWorkingFolder();
83
                ScriptingScript previous = (ScriptingScript) manager.getScript(new File(manager.getRootUserFolder()+File.separator+"test_script.py"));
84
                if (previous!=null){
85
                        manager.getUserFolder().remove(previous);
86
                }
87
                ScriptingScript script = (ScriptingScript) manager.createUnit(ScriptingManager.UNIT_SCRIPT,manager.getUserFolder(),"test_script.py");
88
                
89
                script.save();
90
                
91
                checkFile(manager.getUserFolder(),"test_script.py");
92
                checkFile(manager.getUserFolder(),"test_script.inf");
93
                
94
                checkScriptDefaultValues(script);
95
        }
96

    
97
        public void testOpen(){
98
                testCreation();
99
                ScriptingScript script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));
100
                
101
                checkScriptDefaultValues(script);
102
                deleteWorkingFolderContent();
103
        }
104
        
105
        public void testSave(){
106
                testCreation();
107
                ScriptingScript script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));
108
                
109
                script.setName("TestScript");
110
                script.setDescription("Tests sobre scripts");
111
                script.setCode("def main():\n  return 'hola mundo'\n");
112
                script.setCreatedBy("creator");
113
                script.setVersion("v1.0");
114
                script.save();
115
                
116
                script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));
117
                checkScriptNewValues(script);
118
        }
119
        
120
        public void testRename(){
121
                testSave();
122
                ScriptingScript script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));
123
                
124
                Assert.assertFalse(script.rename("test_script"));
125
                Assert.assertTrue(script.rename("test_script2"));
126
                
127
                script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script2.py"));
128
                
129
                Assert.assertEquals("test_script2", script.getId());
130
                deleteWorkingFolderContent();
131
        }
132
        
133
        public void testMove(){
134
                setWorkingFolder();
135
                ScriptingFolder folderDestination = (ScriptingFolder) manager.createUnit(ScriptingManager.UNIT_FOLDER,manager.getUserFolder(), "other folder");
136
                checkFile(manager.getUserFolder(),"other folder");
137
                
138
                ScriptingScript previous = (ScriptingScript) manager.getScript(new File(folderDestination.getFile(),"test_script.py"));
139
                if (previous!=null){
140
                        folderDestination.remove(previous);
141
                }
142
                
143
                testSave();
144
                ScriptingScript script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));        
145
                
146
                script.move(folderDestination);
147
                System.out.println(script.getParent() + " " + folderDestination);
148
                Assert.assertEquals(script.getParent(),folderDestination);
149
                deleteWorkingFolderContent();
150
        }
151
        
152
        public void testRun() throws NoSuchMethodException{
153
                testSave();
154
                ScriptingScript script = (ScriptingScript) manager.getScript(getFile(manager.getUserFolder(),"test_script.py"));                
155
                Assert.assertEquals("hola mundo", script.run());
156
                
157
                script.setCode("def hola():\n  return 'hola mundo'\n");
158
                //setMainName
159
                script.setMainName("hola");
160
                Assert.assertEquals("hola mundo", script.run());
161
                
162
                //invokeMethod
163
                
164
                //invokeFunction
165
                Assert.assertEquals("hola mundo", script.invokeFunction("hola", null));
166
                deleteWorkingFolderContent();
167
                
168
        }
169

    
170

    
171
}