Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.installer / org.gvsig.installer.lib / org.gvsig.installer.lib.impl / src / test / java / org / gvsig / installer / lib / impl / execution / DependencyCalculatorTest.java @ 40560

History | View | Annotate | Download (4.99 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.installer.lib.impl.execution;
25

    
26
import java.util.ArrayList;
27
import java.util.LinkedHashMap;
28
import java.util.List;
29
import java.util.Map;
30

    
31
import junit.framework.TestCase;
32

    
33
import org.gvsig.installer.lib.api.PackageInfo;
34
import org.gvsig.installer.lib.api.Version;
35
import org.gvsig.installer.lib.impl.DefaultDependenciesCalculator;
36
import org.gvsig.installer.lib.impl.DefaultPackageInfo;
37
import org.gvsig.installer.lib.impl.DefaultVersion;
38

    
39
public class DependencyCalculatorTest extends TestCase {
40

    
41
        private MyInstallPackageService getInstallService() {
42
                MyInstallPackageService serv = new MyInstallPackageService();
43
                serv.addPackage("p1", "1.0.0", null);
44
                serv.addPackage("p1", "2.0.0", null);
45
                serv.addPackage("p1", "3.0.0", null);
46
                serv.addPackage("p2", "3.0.0", null);
47
                serv.addPackage("p2", "5.0.0", null);
48
                serv.addPackage("p2", "9.0.0", null);
49
                serv.addPackage("p3", "1.0.0", null);
50
                serv.addPackage("p4", "1.0.0", null);
51
                serv.addPackage("p5", "1.0.0", "required: p2 -ge 5.0.0");
52
                serv.addPackage("p6", "1.0.0", "required: p1 >= 1.0.0");
53
                serv.addPackage("p7", "1.0.0", "required: p1 -ge 2.0.0");
54
                serv.addPackage("p8", "1.0.0", "required: p2 >= 1, required: p6 -ge 1");
55
                serv.addPackage("p9", "1.0.0",
56
                                "required: p8 >= 1.0.0, required: p7 >= 1.0.0");
57
                return serv;
58
        }
59

    
60
        public void testCalculate() {
61
                MyInstallPackageService installService = this.getInstallService();
62
                DefaultDependenciesCalculator calculator = new DefaultDependenciesCalculator(
63
                                installService);
64

    
65
                calculator.addInstalledPackage(installService.getPackageInfo("p1",
66
                                "1.0.0"));
67
                calculator.addInstalledPackage(installService.getPackageInfo("p2",
68
                                "3.0.0"));
69
                calculator.addInstalledPackage(installService.getPackageInfo("p5",
70
                                "1.0.0"));
71

    
72
                calculator.addPackageToInstall(installService.getPackageInfo("p7",
73
                                "1.0.0"));
74
                calculator.addPackageToInstall(installService.getPackageInfo("p9",
75
                                "1.0.0"));
76

    
77
                calculator.calculate();
78

    
79
                List<PackageInfo> requireds = calculator.getRequiredPackages();
80

    
81
                /*
82
                 * required packages plugin p1 3.0.0-0 devel all all j1_5 null plugin p2
83
                 * 9.0.0-0 devel all all j1_5 null plugin p6 1.0.0-0 devel all all j1_5
84
                 * required: p1 >= 1.0.0-0 plugin p8 1.0.0-0 devel all all j1_5
85
                 * required: p2 >= 1.0.0-0, required: p6 -ge 1.0.0-0
86
                 */
87
                PackageInfo pkg;
88
                assertEquals(4, requireds.size());
89
                pkg = requireds.get(0);
90
                assertEquals("p1", pkg.getCode());
91
                assertEquals("3.0.0-0", pkg.getVersion().toString());
92
                pkg = requireds.get(1);
93
                assertEquals("p2", pkg.getCode());
94
                assertEquals("9.0.0-0", pkg.getVersion().toString());
95
                pkg = requireds.get(2);
96
                assertEquals("p6", pkg.getCode());
97
                assertEquals("1.0.0-0", pkg.getVersion().toString());
98
                pkg = requireds.get(3);
99
                assertEquals("p8", pkg.getCode());
100
                assertEquals("1.0.0-0", pkg.getVersion().toString());
101
        }
102

    
103
        private class MyInstallPackageService extends InstallPackageServiceDumb {
104

    
105
                Map<String, PackageInfo> packages = new LinkedHashMap<String, PackageInfo>();
106
                List<PackageInfo> pacakgesList = null;
107

    
108
                MyInstallPackageService() {
109

    
110
                }
111

    
112
                public void addPackage(String code, String version, String dependencies) {
113
                        DefaultPackageInfo pkg = new DefaultPackageInfo();
114
                        pkg.setCode(code);
115
                        pkg.setType("plugin");
116
                        pkg.setVersion(new DefaultVersion().parse(version));
117
                        pkg.setDependencies(dependencies);
118
                        pkg.setName(code + " (name)");
119
                        pkg.setDescription(code + " (description)");
120

    
121
                        packages.put(pkg.getCode() + "-" + pkg.getVersion().fullFormat(),
122
                                        pkg);
123
                }
124

    
125
                public PackageInfo getPackageInfo(String code, String version) {
126
                        Version ver = new DefaultVersion().parse(version);
127
                        return packages.get(code + "-" + ver.fullFormat());
128
                }
129

    
130
                @Override
131
                public int getPackageCount() {
132
                        if (pacakgesList == null) {
133
                                pacakgesList = new ArrayList<PackageInfo>();
134
                                pacakgesList.addAll(packages.values());
135
                        }
136
                        return pacakgesList.size();
137
                }
138

    
139
                @Override
140
                public PackageInfo getPackageInfo(int index) {
141
                        if (pacakgesList == null) {
142
                                pacakgesList = new ArrayList<PackageInfo>();
143
                                pacakgesList.addAll(packages.values());
144
                        }
145
                        return pacakgesList.get(index);
146
                }
147
        }
148

    
149
}