Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / org.gvsig.installer / org.gvsig.installer.lib / org.gvsig.installer.lib.impl / src / test / java / org / gvsig / installer / lib / impl / execution / DependencyCalculatorTest.java @ 35979

History | View | Annotate | Download (3.93 KB)

1
package org.gvsig.installer.lib.impl.execution;
2

    
3
import java.util.ArrayList;
4
import java.util.LinkedHashMap;
5
import java.util.List;
6
import java.util.Map;
7

    
8
import junit.framework.TestCase;
9

    
10
import org.gvsig.installer.lib.api.PackageInfo;
11
import org.gvsig.installer.lib.api.Version;
12
import org.gvsig.installer.lib.impl.DefaultDependenciesCalculator;
13
import org.gvsig.installer.lib.impl.DefaultPackageInfo;
14
import org.gvsig.installer.lib.impl.DefaultVersion;
15

    
16
public class DependencyCalculatorTest extends TestCase {
17

    
18
        private MyInstallPackageService getInstallService() {
19
                MyInstallPackageService serv = new MyInstallPackageService();
20
                serv.addPackage("p1", "1.0.0", null);
21
                serv.addPackage("p1", "2.0.0", null);
22
                serv.addPackage("p1", "3.0.0", null);
23
                serv.addPackage("p2", "3.0.0", null);
24
                serv.addPackage("p2", "5.0.0", null);
25
                serv.addPackage("p2", "9.0.0", null);
26
                serv.addPackage("p3", "1.0.0", null);
27
                serv.addPackage("p4", "1.0.0", null);
28
                serv.addPackage("p5", "1.0.0", "required: p2 -ge 5.0.0");
29
                serv.addPackage("p6", "1.0.0", "required: p1 >= 1.0.0");
30
                serv.addPackage("p7", "1.0.0", "required: p1 -ge 2.0.0");
31
                serv.addPackage("p8", "1.0.0", "required: p2 >= 1, required: p6 -ge 1");
32
                serv.addPackage("p9", "1.0.0", "required: p8 >= 1.0.0, required: p7 >= 1.0.0");
33
                return serv;
34
        }
35
        
36
        public void testCalculate() {
37
                MyInstallPackageService installService = this.getInstallService();
38
                DefaultDependenciesCalculator calculator = new DefaultDependenciesCalculator(installService);
39
                
40
                calculator.addInstalledPackage( installService.getPackageInfo("p1","1.0.0"));
41
                calculator.addInstalledPackage( installService.getPackageInfo("p2","3.0.0"));
42
                calculator.addInstalledPackage( installService.getPackageInfo("p5","1.0.0"));
43
                
44
                calculator.addPackageToInstall(installService.getPackageInfo("p7","1.0.0"));
45
                calculator.addPackageToInstall(installService.getPackageInfo("p9","1.0.0"));
46
                
47
                calculator.calculate();
48
                
49
                List<PackageInfo> requireds = calculator.getRequiredPackages();
50
                
51
                /*
52
                        required packages
53
                        PKG p1 ver=2.0.0-0
54
                        PKG p2 ver=5.0.0-0
55
                        PKG p6 ver=1.0.0-0 deps=required: p1 >= 1.0.0-0
56
                        PKG p8 ver=1.0.0-0 deps=required: p2 >= 1.0.0-0, required: p6 >= 1.0.0-0
57
                */
58
                PackageInfo pkg;
59
                assertEquals(4, requireds.size());
60
                pkg = requireds.get(0);
61
                assertEquals("p1", pkg.getCode());
62
                assertEquals("2.0.0-0", pkg.getVersion().toString());
63
                pkg = requireds.get(1);
64
                assertEquals("p2", pkg.getCode());
65
                assertEquals("5.0.0-0", pkg.getVersion().toString());
66
                pkg = requireds.get(2);
67
                assertEquals("p6", pkg.getCode());
68
                assertEquals("1.0.0-0", pkg.getVersion().toString());
69
                pkg = requireds.get(3);
70
                assertEquals("p8", pkg.getCode());
71
                assertEquals("1.0.0-0", pkg.getVersion().toString());
72
        }
73

    
74
        private class MyInstallPackageService extends InstallPackageServiceDumb {
75
                
76
                Map<String,PackageInfo> packages = new LinkedHashMap<String, PackageInfo>();
77
                List<PackageInfo> pacakgesList = null;
78
                
79
                MyInstallPackageService() {
80
                        
81
                }
82
                
83
                public void addPackage(String code, String version, String dependencies) {
84
                        DefaultPackageInfo pkg = new DefaultPackageInfo();
85
                        pkg.setCode(code);
86
                        pkg.setType("plugin");
87
                        pkg.setVersion(new DefaultVersion().parse(version));
88
                        pkg.setDependencies( dependencies);
89
                        pkg.setName(code +" (name)");
90
                        pkg.setDescription(code + " (description)");
91
                        
92
                        packages.put(pkg.getCode()+"-"+pkg.getVersion().fullFormat(), pkg);
93
                }
94
                
95
                public PackageInfo getPackageInfo(String code, String version) {
96
                        Version ver = new DefaultVersion().parse(version);
97
                        return packages.get(code+"-"+ver.fullFormat());
98
                }
99

    
100
                public int getPackageCount() {
101
                        if( pacakgesList==null ) {
102
                                pacakgesList = new ArrayList<PackageInfo>(); 
103
                                pacakgesList.addAll(packages.values());
104
                        }
105
                        return pacakgesList.size();
106
                }
107
                
108
                public PackageInfo getPackageInfo(int index) {
109
                        if( pacakgesList==null ) {
110
                                pacakgesList = new ArrayList<PackageInfo>(); 
111
                                pacakgesList.addAll(packages.values());
112
                        }
113
                        return pacakgesList.get(index);
114
                }
115
        }
116

    
117
}