// BridgeDb,
// An abstraction layer for identifier mapping services, both local and online.
//
// Copyright 2012 Egon Willighagen <egonw@users.sf.net>
// Copyright 2013 Christian Brenninkmeijer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package org.bridgedb;
import org.junit.Assert;
import org.junit.Test;
public class DataSourceTest {
@Test
public void testAsDataSource() {
DataSource source = DataSource.register("X", "Affymetrix")
.asDataSource();
Assert.assertNotNull(source);
}
@Test
public void testBuilding() {
DataSource source = DataSource.register("X", "Affymetrix").asDataSource();
Assert.assertEquals("X", source.getSystemCode());
Assert.assertEquals("Affymetrix", source.getFullName());
}
@Test
public void testBuildingMainUrl() {
DataSource source = DataSource.register("X", "Affymetrix")
.mainUrl("http://www.affymetrix.com")
.asDataSource();
Assert.assertEquals("http://www.affymetrix.com", source.getMainUrl());
}
@Test (expected = IllegalArgumentException.class)
public void testChangeMainUrl() {
DataSource source = DataSource.register("X", "Affymetrix")
.mainUrl("http://www.affymetrix.com")
.asDataSource();
source = DataSource.register("X", "Affymetrix")
.mainUrl("http://www.affymetrix.com/A")
.asDataSource();
}
@Test
public void testBuildingType() {
DataSource source = DataSource.register("X", "Affymetrix")
.type("probe")
.asDataSource();
Assert.assertEquals("probe", source.getType());
Assert.assertFalse(source.isMetabolite());
}
public void testBuildingType1() {
DataSource source = DataSource.register("X", "Affymetrix")
.type("metabolite")
.asDataSource();
Assert.assertEquals("metabolite", source.getType());
Assert.assertTrue(source.isMetabolite());
}
//TODO check if changing primary is a needed functionality
@Test
public void testBuildingPrimary() {
DataSource source = DataSource.register("X", "Affymetrix")
.primary(false)
.asDataSource();
Assert.assertFalse(source.isPrimary());
source = DataSource.register("X", "Affymetrix")
.primary(true)
.asDataSource();
Assert.assertTrue(source.isPrimary());
}
@Test
public void testBuildingMetabolite() {
DataSource source = DataSource.register("F", "MetaboLoci")
.type("metabolite")
.asDataSource();
Assert.assertEquals("metabolite", source.getType());
Assert.assertTrue(source.isMetabolite());
}
@Test
public void testDeprecated() {
DataSource source = DataSource.register("EnAg", "Ensembl Mosquito")
.deprecated(true).asDataSource();
Assert.assertTrue(source.isDeprecated());
}
@Test
public void testDeprecated_False() {
DataSource source = DataSource.register("EnAg", "Ensembl Mosquito")
.deprecated(true).deprecated(false).asDataSource();
Assert.assertFalse(source.isDeprecated());
}
/**
* By default, all new data sources are not deprecated.
*/
@Test
public void testDefaultNotDeprecated() {
DataSource source = DataSource.register("F", "MetaboLoci")
.asDataSource();
Assert.assertFalse(source.isDeprecated());
}
@Test
public void testDeprecatedBy() {
DataSource source = DataSource.register("EnAg", "Ensembl Mosquito")
.deprecatedBy(
DataSource.register("En", "Ensembl").asDataSource()
).asDataSource();
Assert.assertTrue(source.isDeprecated());
Assert.assertNotNull(source.isDeprecatedBy());
Assert.assertEquals("En", source.isDeprecatedBy().getSystemCode());
}
@Test
public void testDeprecatedByUndoneByDeprecatedFalse() {
DataSource source = DataSource.register("EnAg", "Ensembl Mosquito")
.deprecatedBy(
DataSource.register("En", "Ensembl").asDataSource()
).deprecated(false).asDataSource();
Assert.assertFalse(source.isDeprecated());
Assert.assertNull(source.isDeprecatedBy());
}
@Test(expected=IllegalArgumentException.class)
public void testDeprecatedByNullCausesException() {
DataSource.register("EnAg", "Ensembl Mosquito")
.deprecatedBy(null).asDataSource();
}
@Test
public void testDefaultNoDeprecatedBy() {
DataSource source = DataSource.register("Cps", "PubChem-substance")
.asDataSource();
Assert.assertNull(source.isDeprecatedBy());
}
@Test
public void testEquals() {
DataSource source = DataSource.register("Cps", "PubChem-substance")
.asDataSource();
DataSource source2 = DataSource.register("Cps", "PubChem-substance")
.asDataSource();
Assert.assertEquals(source, source2);
}
//Since Version 2.0.09 this is no longer allowed!
@Test (expected = IllegalArgumentException.class)
public void testEqualsToo() {
DataSource source = DataSource.register("Cpc", "PubChem-compound")
.asDataSource();
DataSource source2 = DataSource.register("Cpc", "PubChem compound")
.asDataSource();
Assert.assertEquals(source, source2);
}
// @Test (expected = IllegalArgumentException.class)
public void testChangeType() {
DataSource source = DataSource.register("X", "Affymetrix")
.type("metabolite")
.asDataSource();
Assert.assertEquals("metabolite", source.getType());
Assert.assertTrue(source.isMetabolite());
source = DataSource.register("X", "Affymetrix")
.type("probe")
.asDataSource();
Assert.assertEquals("probe", source.getType());
Assert.assertFalse(source.isMetabolite());
}
@Test
public void testBuildingAlternative() {
DataSource source = DataSource.register("F", "MetaboLoci")
.alternative("MetaboLoci Alternative")
.asDataSource();
Assert.assertEquals("MetaboLoci Alternative", source.getAlternative());
}
@Test
public void testBuildingDescription() {
DataSource source = DataSource.register("F", "MetaboLoci")
.description("MetaboLoci description")
.asDataSource();
Assert.assertEquals("MetaboLoci description", source.getDescription());
}
}