Skip to content

Commit

Permalink
Merge pull request #17 from moosetechnology/no-jexample
Browse files Browse the repository at this point in the history
No jexample
  • Loading branch information
badetitou authored Dec 3, 2024
2 parents 5fe29d3 + c77cc6e commit 81c88f2
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 82 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/bin/
lib/bin
fame-rUnversioned directory.jar
fame-lib.jar

Expand Down
Empty file modified gradlew
100644 → 100755
Empty file.
9 changes: 1 addition & 8 deletions lib/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,12 @@ repositories {
}

dependencies {
// Use JUnit test framework.
testImplementation("org.junit.jupiter:junit-jupiter:5.7.1")

testImplementation("junit:junit:4.13.2")
// This dependency is exported to consumers, that is to say found on their compile classpath.
api(libs.commons.math3)

// This dependency is used internally, and not exposed to consumers on their own compile classpath.
implementation(libs.guava)

// https://mvnrepository.com/artifact/net.sf.jexample/jexample
implementation("net.sf.jexample:jexample:4.4-378")


implementation(fileTree("lib") { include("*.jar") })
}

Expand Down
168 changes: 94 additions & 74 deletions lib/src/test/java/ch/akuhn/fame/test/CompositeExample.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,12 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.Collection;

import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

import ch.akuhn.fame.FameDescription;
import ch.akuhn.fame.FamePackage;
Expand All @@ -20,13 +17,8 @@
import ch.akuhn.fame.Repository;
import ch.akuhn.fame.Tower;
import ch.akuhn.fame.fm3.PropertyDescription;
import ch.unibe.jexample.Given;
import ch.unibe.jexample.Injection;
import ch.unibe.jexample.InjectionPolicy;
import ch.unibe.jexample.JExample;

@RunWith(JExample.class)
@Injection(InjectionPolicy.NONE)

public class CompositeExample {

@FameDescription
Expand All @@ -46,7 +38,7 @@ static abstract class Composite {
static class Container extends Composite {

@FameProperty(opposite = "parent")
public Collection<Composite> children = new ArrayList();
public Collection<Composite> children = new ArrayList<>();

@Override
public int getTotalCount() {
Expand All @@ -72,147 +64,166 @@ public int getTotalCount() {

}

@Test
public Tower createTower() {
Tower t = new Tower();
return t;
}

@Test
public void testCreateTower() {
Tower t = createTower();
assertNotNull(t.getMetaMetamodel());
assertNotNull(t.getMetamodel());
assertNotNull(t.getModel());
return t;
}

@Test
@Given("#createTower")
public Tower towerHasLayers(Tower t) {
public void towerHasLayers() {
Tower t = this.createTower();
assertEquals(t.getModel().getMetamodel(), t.getMetamodel());
assertEquals(t.getMetamodel().getMetamodel(), t.getMetaMetamodel());
assertEquals(t.getMetaMetamodel().getMetamodel(), t.getMetaMetamodel());
return t;
}

@Test
@Given("#towerHasLayers")
public Tower tower(Tower t) {
public void tower() {
Tower t = this.createTower();
assertEquals(0, t.getModel().size());
assertEquals(0, t.getMetamodel().size());
assertEquals(31, t.getMetaMetamodel().size());
return t;
}

@Test
@Ignore // FIXME
@Given("model;newParent;newChildA;newChildB")
public Repository createInstances(Repository $) {
assertEquals(3, $.getElements().size());
return $;
}
// @Test
// @Ignore // FIXME
// public Repository createInstances(Repository $) {
// assertEquals(3, $.getElements().size());
// return $;
// }

@Test
@Given("model;parentWithChildren")
public String exportMSE(Repository m) {
public String exportMSE() {
Repository m = model();
setParentWithChildren(m);
String mse = m.exportMSE();
return mse;
}

@Test
@Ignore // FIXME
@Given("tower;exportMSE;metamodel")
public Repository importMSE(Tower t, String mse) {
t.getModel().importMSE(mse);
Repository m = t.getModel();
assertEquals(3, m.getElements().size());
return m;
public void testExportMSE() {
String mse = exportMSE();
// 165 is the magic number of the size of the string. I wanted to test that the string size is more than 2 char (not empty model)
assertEquals(165, mse.length());

}

@Test
@Ignore // FIXME
@Given("model;model")
public void jexampleKeepWorksFine(Repository m1, Repository m2) {
assertSame(m1, m2);
public void importMSE() {
String mse = exportMSE();
Repository model = model();
model.importMSE(mse);
assertEquals(3, model.getElements().size());
}

@Test
@Given("#tower")
public MetaRepository metamodel(Tower t) {
public MetaRepository metamodel () {
Tower t = new Tower();
t.getMetamodel().withAll(Composite.class, Container.class, Leaf.class);
MetaRepository $ = t.getMetamodel();
return $;
}

@Test
public void testMetamodel() {
MetaRepository $ = metamodel();
assertEquals(3, $.allClassDescriptions().size());
assertEquals(4, $.all(PropertyDescription.class).size());
}

public Repository model() {
MetaRepository metamodel = metamodel();
Repository $ = new Repository(metamodel);
return $;
}

@Test
@Given("metamodelNames")
public Repository model(MetaRepository metamodel) {
public void testModel() {
MetaRepository metamodel = metamodel();
Repository $ = new Repository(metamodel);
assertEquals(metamodel, $.getMetamodel());
return $;
}


@Test
@Given("metamodel")
public MetaRepository metamodelNames(MetaRepository mm) {
assertNull(mm.descriptionNamed("FAME"));
assertNotNull(mm.descriptionNamed("TEST.Container"));
assertNotNull(mm.descriptionNamed("TEST.Leaf"));
assertNotNull(mm.descriptionNamed("TEST.Composite"));
return mm;
public void testMetamodelNames() {
MetaRepository metamodel = metamodel();
assertNull(metamodel.descriptionNamed("FAME"));
assertNotNull(metamodel.descriptionNamed("TEST.Container"));
assertNotNull(metamodel.descriptionNamed("TEST.Leaf"));
assertNotNull(metamodel.descriptionNamed("TEST.Composite"));
}

@Test
@Given("model")
public Leaf newChildA(Repository repo) {
Object $ = repo.newInstance("TEST.Leaf");
assertNotNull($);
assertEquals(Leaf.class, $.getClass());
return (Leaf) $;
}

@Test
@Given("model")
public Leaf newChildB(Repository repo) {
Object $ = repo.newInstance("TEST.Leaf");
public void testNewChildA() {
Object $ = newChildA(model());
assertNotNull($);
assertEquals(Leaf.class, $.getClass());
}

public Leaf newChildB(Repository repo) {
Object $ = repo.newInstance("TEST.Leaf");
return (Leaf) $;
}

@Test
@Given("model")
public void testNewChildB() {
Object $ = newChildB(model());
assertNotNull($);
assertEquals(Leaf.class, $.getClass());
}

public Container newParent(Repository repo) {
Object $ = repo.newInstance("TEST.Container");
return (Container) $;
}

@Test
public void testNewParent() {
Object $ = newParent(model());
assertNotNull($);
assertEquals(Container.class, $.getClass());
return (Container) $;

}

@Test
@Given("model;newChildA")
public Leaf numberPropertyA(Repository m, Leaf a) {
public void numberPropertyA() {
Repository m = model();
Leaf a = newChildA(m);
assertEquals((Integer) 0, (Integer) a.count);
assertEquals((Integer) 0, (Integer) m.read("count", a));
m.write("count", a, 42);
assertEquals(42, a.count);
assertEquals((Integer)42, (Integer)m.read("count", a));
return a;
}

@Test
@Given("model;newChildB")
public Leaf numberPropertyB(Repository m, Leaf b) {
public void numberPropertyB() {
Repository m = model();
Leaf b = newChildB(m);
assertEquals(0, b.count);
assertEquals((Integer) 0, m.read("count", b));
m.write("count", b, 23);
assertEquals(23, b.count);
assertEquals((Integer) 23, m.read("count", b));
return b;
}

@Test
@Given("metamodel;metamodelNames")
public void parentChildrenAreOpposite(MetaRepository mm) {
PropertyDescription parent = mm.descriptionNamed("TEST.Composite").attributeNamed("parent");
PropertyDescription children = mm.descriptionNamed("TEST.Container").attributeNamed("children");
public void parentChildrenAreOpposite() {
MetaRepository metamodel = metamodel();
PropertyDescription parent = metamodel.descriptionNamed("TEST.Composite").attributeNamed("parent");
PropertyDescription children = metamodel.descriptionNamed("TEST.Container").attributeNamed("children");
assertNotNull(parent);
assertNotNull(children);
assertTrue(parent.hasOpposite());
Expand All @@ -221,16 +232,25 @@ public void parentChildrenAreOpposite(MetaRepository mm) {
assertEquals(children, parent.getOpposite());
}

public void setParentWithChildren(Repository m) {
Container p = newParent(m);
Leaf a = newChildA(m);
Leaf b = newChildB(m);
m.write("children", p, a, b);
}

@Test
@Given("model;newParent;newChildA;newChildB;parentChildrenAreOpposite")
public Container parentWithChildren(Repository m, Container p, Leaf a, Leaf b) {
public void parentWithChildren() {
Repository m = model();
Container p = newParent(m);
Leaf a = newChildA(m);
Leaf b = newChildB(m);
assertEquals(0, p.children.size());
assertEquals(null, a.parent);
assertEquals(null, b.parent);
m.write("children", p, a, b);
assertEquals(2, p.children.size());
assertEquals(p, a.parent);
assertEquals(p, b.parent);
return p;
}
}

0 comments on commit 81c88f2

Please sign in to comment.