/**
* Copyright (c) 2013-2016 Angelo ZERR.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern;
import java.io.File;
import org.junit.Assert;
import org.junit.Test;
import tern.repository.TernRepository;
import tern.server.ITernModule;
import tern.server.nodejs.process.PathHelper;
public class TernRepositoryTest {
@Test
public void defaultRepository() throws TernException {
File ternBaseDir = PathHelper.getTernRepositoryDir();
TernRepository repository = new TernRepository("default", ternBaseDir);
ITernModule[] modules = repository.getModules();
for (int i = 0; i < modules.length; i++) {
System.err.println(modules[i].getName());
}
assertHasModule(repository, "browser");
assertHasModule(repository, "chai");
assertHasModule(repository, "ecmascript");
assertHasModule(repository, "jquery");
assertHasModule(repository, "underscore");
assertHasModule(repository, "angular");
assertHasModule(repository, "ckeditor4.4.x", "ckeditor", "4.4.x");
assertHasModule(repository, "dojotoolkit1.6", "dojotoolkit", "1.6");
assertHasModule(repository, "dojotoolkit1.8", "dojotoolkit", "1.8");
assertHasModule(repository, "dojotoolkit1.9", "dojotoolkit", "1.9");
assertHasModule(repository, "extjs_4.2.1", "extjs_", "4.2.1");
assertHasModule(repository, "extjs_5.0.0", "extjs_", "5.0.0");
assertHasModule(repository, "gmaps3.exp", "gmaps", "3.exp");
assertHasModule(repository, "gmaps3.frozen", "gmaps", "3.frozen");
assertHasModule(repository, "gmaps3.ref", "gmaps", "3.ref");
assertHasModule(repository, "grunt");
assertHasModule(repository, "meteor");
assertHasModule(repository, "node");
assertHasModule(repository, "qooxdoo4.1", "qooxdoo", "4.1");
assertHasModule(repository, "chrome-apps");
assertHasModule(repository, "closure");
assertHasModule(repository, "cordovajs");
assertHasModule(repository, "gas");
assertHasModule(repository, "jasmine");
assertHasModule(repository, "liferay");
assertHasModule(repository, "lint");
assertHasModule(repository, "eslint");
assertHasModule(repository, "jshint");
assertHasModule(repository, "jscs");
assertHasModule(repository, "node-express");
assertHasModule(repository, "node-mongodb-native");
assertHasModule(repository, "node-mongoose");
assertHasModule(repository, "phaser");
assertHasModule(repository, "tabris");
assertHasModule(repository, "yui3", "yui", "3");
assertHasModule(repository, "aui2.0.x", "aui", "2.0.x");
}
private void assertHasModule(TernRepository repository, String name)
throws TernException {
assertHasModule(repository, name, null, null);
}
private void assertHasModule(TernRepository repository, String name,
String type, String version) throws TernException {
boolean hasModule = hasModule(repository, name, type, version);
Assert.assertTrue("Cannot find module '" + name + "'", hasModule);
}
private boolean hasModule(TernRepository repository, String name,
String type, String version) throws TernException {
ITernModule[] modules = repository.getModules();
ITernModule module = null;
for (int i = 0; i < modules.length; i++) {
module = modules[i];
if (name.equals(module.getName())) {
if (!(type == null || type.equals(module.getType()))) {
return false;
}
if (!(version == null || version.equals(module.getVersion()))) {
return false;
}
return true;
}
}
return false;
}
}