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 |
} |