Skip to content
This repository has been archived by the owner on Aug 23, 2023. It is now read-only.

Commit

Permalink
[kernel][bic] Add new functions in the BIC.
Browse files Browse the repository at this point in the history
see sarl/sarl#168

Signed-off-by: Stéphane Galland <galland@arakhne.org>
  • Loading branch information
gallandarakhneorg committed Feb 16, 2015
1 parent 02f1318 commit 9d97ed4
Show file tree
Hide file tree
Showing 7 changed files with 537 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import io.sarl.lang.core.EventSpace;
import io.sarl.lang.core.Scope;
import io.sarl.lang.core.Skill;
import io.sarl.lang.core.Space;
import io.sarl.lang.core.SpaceID;
import io.sarl.util.Scopes;

import java.util.UUID;
Expand Down Expand Up @@ -116,4 +118,40 @@ public UUID spawn(Class<? extends Agent> aAgent, Object... params) {
return getSkill(Lifecycle.class).spawnInContext(aAgent, this.parentContext, params);
}

@Override
public boolean isDefaultSpace(Space space) {
return isDefaultSpace(space.getID());
}

@Override
public boolean isDefaultSpace(SpaceID space) {
return isDefaultSpace(space.getID());
}

@Override
public boolean isDefaultSpace(UUID space) {
return space.equals(this.defaultSpace.getID().getID());
}

@Override
public boolean isInDefaultSpace(Event event) {
if (event != null) {
Address adr = event.getSource();
if (adr != null) {
return isDefaultSpace(adr.getSpaceId());
}
}
return false;
}

@Override
public boolean isDefaultContext(AgentContext context) {
return isDefaultContext(context.getID());
}

@Override
public boolean isDefaultContext(UUID contextID) {
return contextID.equals(this.defaultSpace.getID().getContextID());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@
import io.sarl.core.MemberLeft;
import io.sarl.lang.core.Agent;
import io.sarl.lang.core.AgentContext;
import io.sarl.lang.core.Event;
import io.sarl.lang.core.EventSpace;
import io.sarl.lang.core.Skill;
import io.sarl.lang.core.Space;
import io.sarl.lang.core.SpaceID;
import io.sarl.lang.util.SynchronizedCollection;
import io.sarl.util.Collections3;
import io.sarl.util.OpenEventSpace;
Expand Down Expand Up @@ -208,4 +211,19 @@ protected void fireMemberLeft(AgentContext leftContext) {
getOwner().getClass().getName()));
}

@Override
public boolean isInSpace(Event event, Space space) {
return isInSpace(event, space.getID());
}

@Override
public boolean isInSpace(Event event, SpaceID spaceID) {
return isInSpace(event, spaceID.getID());
}

@Override
public boolean isInSpace(Event event, UUID spaceID) {
return spaceID.equals(event.getSource().getSpaceId().getID());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
import io.sarl.lang.core.Address;
import io.sarl.lang.core.Agent;
import io.sarl.lang.core.AgentContext;
import io.sarl.lang.core.Event;
import io.sarl.lang.core.EventListener;
import io.sarl.lang.core.Skill;
import io.sarl.lang.core.Space;
import io.sarl.lang.core.SpaceID;
import io.sarl.lang.util.SynchronizedSet;
import io.sarl.util.Collections3;
import io.sarl.util.OpenEventSpace;
Expand Down Expand Up @@ -178,4 +181,30 @@ public synchronized SynchronizedSet<UUID> getMemberAgents() {
return Collections3.emptySynchronizedSet();
}

@Override
public boolean isInnerDefaultSpace(Space space) {
return isInnerDefaultSpace(space.getID());
}

@Override
public boolean isInnerDefaultSpace(SpaceID spaceID) {
return isInnerDefaultSpace(spaceID.getID());
}

@Override
public boolean isInnerDefaultSpace(UUID spaceID) {
return spaceID.equals(this.innerContext.getDefaultSpace().getID().getID());
}

@Override
public boolean isInInnerDefaultSpace(Event event) {
if (event != null) {
Address adr = event.getSource();
if (adr != null) {
return isInnerDefaultSpace(adr.getSpaceId());
}
}
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
*/
package io.janusproject.kernel.bic;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
Expand All @@ -33,23 +39,20 @@
import io.sarl.lang.core.EventSpace;
import io.sarl.lang.core.EventSpaceSpecification;
import io.sarl.lang.core.Scope;
import io.sarl.lang.core.Space;
import io.sarl.lang.core.SpaceID;
import io.sarl.util.Scopes;

import java.util.UUID;

import javax.annotation.Nullable;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Matchers;
import org.mockito.internal.verification.Times;

import static org.junit.Assert.*;

/**
* @author $Author: sgalland$
* @version $FullVersion$
Expand All @@ -74,23 +77,39 @@ public class DefaultContextInteractionsSkillTest extends AbstractJanusTest {
@Nullable
private Lifecycle lifeCapacity;

@Nullable
private SpaceID defaultSpaceID;

@Nullable
private UUID defaultSpaceUUID;

@Nullable
private UUID defaultContextUUID;

@Before
public void setUp() throws Exception {
this.defaultSpaceUUID = UUID.randomUUID();
this.defaultContextUUID = UUID.randomUUID();

this.defaultSpaceID = new SpaceID(
this.defaultContextUUID,
this.defaultSpaceUUID,
EventSpaceSpecification.class);

this.address = new Address(
new SpaceID(
UUID.randomUUID(),
UUID.randomUUID(),
EventSpaceSpecification.class),
this.defaultSpaceID,
UUID.randomUUID());

this.defaultSpace = mock(EventSpace.class);
when(this.defaultSpace.getAddress(Matchers.any(UUID.class))).thenReturn(this.address);

when(this.defaultSpace.getID()).thenReturn(this.defaultSpaceID);

this.parentContext = mock(AgentContext.class);
when(this.parentContext.getDefaultSpace()).thenReturn(this.defaultSpace);

when(this.parentContext.getID()).thenReturn(this.defaultContextUUID);

this.lifeCapacity = mock(Lifecycle.class);

Agent agent = new Agent(UUID.randomUUID()) {
@Override
protected <S extends Capacity> S getSkill(Class<S> capacity) {
Expand Down Expand Up @@ -167,5 +186,136 @@ public void spawn() {
assertSame(this.parentContext, argument2.getValue());
assertArrayEquals(new String[] { "a", "b", "c" }, argument3.getAllValues().toArray()); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
}


@Test(expected = NullPointerException.class)
public void isDefaultSpaceSpace_null() {
this.skill.install();
this.skill.isDefaultSpace((Space) null);
}

@Test
public void isDefaultSpaceSpace_defaultSpace() {
this.skill.install();
assertTrue(this.skill.isDefaultSpace(this.defaultSpace));
}

@Test
public void isDefaultSpaceSpace_otherSpace() {
this.skill.install();
UUID id = UUID.randomUUID();
SpaceID spaceId = mock(SpaceID.class);
when(spaceId.getID()).thenReturn(id);
EventSpace otherSpace = mock(EventSpace.class);
when(otherSpace.getID()).thenReturn(spaceId);
//
assertFalse(this.skill.isDefaultSpace(otherSpace));
}

@Test(expected = NullPointerException.class)
public void isDefaultSpaceSpaceID_null() {
this.skill.install();
this.skill.isDefaultSpace((SpaceID) null);
}

@Test
public void isDefaultSpaceSpaceID_defaultSpace() {
this.skill.install();
assertTrue(this.skill.isDefaultSpace(this.defaultSpace.getID()));
}

@Test
public void isDefaultSpaceSpaceID_otherSpace() {
this.skill.install();
UUID id = UUID.randomUUID();
SpaceID spaceId = mock(SpaceID.class);
when(spaceId.getID()).thenReturn(id);
//
assertFalse(this.skill.isDefaultSpace(spaceId));
}

@Test(expected = NullPointerException.class)
public void isDefaultSpaceUUID_null() {
this.skill.install();
this.skill.isDefaultSpace((UUID) null);
}

@Test
public void isDefaultSpaceUUID_defaultSpace() {
this.skill.install();
assertTrue(this.skill.isDefaultSpace(this.defaultSpaceUUID));
}

@Test
public void isDefaultSpaceUUID_otherSpace() {
this.skill.install();
UUID id = UUID.randomUUID();
assertFalse(this.skill.isDefaultSpace(id));
}

@Test
public void isInDefaultSpaceEvent_null() {
this.skill.install();
assertFalse(this.skill.isInDefaultSpace(null));
}

@Test
public void isInDefaultSpaceEvent_defaultSpace() {
this.skill.install();
Event event = mock(Event.class);
when(event.getSource()).thenReturn(this.address);
//
assertTrue(this.skill.isInDefaultSpace(event));
}

@Test
public void isInDefaultSpaceEvent_otherSpace() {
this.skill.install();
SpaceID spaceID = new SpaceID(this.defaultSpaceID.getContextID(), UUID.randomUUID(), EventSpaceSpecification.class);
Address adr = mock(Address.class);
when(adr.getSpaceId()).thenReturn(spaceID);
Event event = mock(Event.class);
when(event.getSource()).thenReturn(adr);
//
assertFalse(this.skill.isInDefaultSpace(event));
}

@Test(expected = NullPointerException.class)
public void isDefaultContextAgentContext_null() {
this.skill.install();
this.skill.isDefaultContext((AgentContext) null);
}

@Test
public void isDefaultContextAgentContext_defaultContext() {
this.skill.install();
assertTrue(this.skill.isDefaultContext(this.parentContext));
}

@Test
public void isDefaultContextAgentContext_otherContext() {
this.skill.install();
AgentContext context = mock(AgentContext.class);
when(context.getID()).thenReturn(UUID.randomUUID());
//
assertFalse(this.skill.isDefaultContext(context));
}

@Test(expected = NullPointerException.class)
public void isDefaultContextUUID_null() {
this.skill.install();
this.skill.isDefaultContext((UUID) null);
}

@Test
public void isDefaultContextUUID_defaultContext() {
this.skill.install();
assertTrue(this.skill.isDefaultContext(this.parentContext.getID()));
}

@Test
public void isDefaultContextUUID_otherContext() {
this.skill.install();
assertFalse(this.skill.isDefaultContext(UUID.randomUUID()));
}

}
Loading

0 comments on commit 9d97ed4

Please sign in to comment.