/*
* $Id$
*
* SARL is an general-purpose agent programming language.
* More details on http://www.sarl.io
*
* Copyright (C) 2014-2017 the original authors or authors.
*
* 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 io.sarl.lang.core.tests.scoping.batch;
import static io.sarl.lang.scoping.batch.SARLMapExtensions.operator_add;
import static io.sarl.lang.scoping.batch.SARLMapExtensions.operator_minus;
import static io.sarl.lang.scoping.batch.SARLMapExtensions.operator_plus;
import static io.sarl.lang.scoping.batch.SARLMapExtensions.operator_remove;
import static org.junit.Assert.*;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.eclipse.xtext.xbase.lib.Pair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* @author $Author: sgalland$
* @version $FullVersion$
* @mavengroupid $GroupId$
* @mavenartifactid $ArtifactId$
*/
@SuppressWarnings("all")
public class SARLMapExtensionsTest {
private Map<String, String> map;
private String key1;
private String key2;
private String value1;
private String value2;
@Before
public void setUp() {
this.map = new HashMap<String, String>();
this.key1 = "k1"; //$NON-NLS-1$
this.key2 = "k2"; //$NON-NLS-1$
this.value1 = UUID.randomUUID().toString();
this.value2 = UUID.randomUUID().toString();
this.map.put(this.key1, this.value1);
this.map.put(this.key2, this.value2);
}
@After
public void tearDown() {
this.key1 = this.value1 = null;
this.key2 = this.value2 = null;
this.map = null;
}
@Test
public void operator_addMapPair_0() {
String v = UUID.randomUUID().toString();
String o;
o = operator_add(this.map, new Pair<String, String>("k3", v));
assertNull(o);
assertEquals(3, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertEquals(v, this.map.get("k3"));
}
@Test
public void operator_addMapPair_1() {
String v = UUID.randomUUID().toString();
String o;
o = operator_add(this.map, new Pair<String, String>("k2", v));
assertEquals(this.value2, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(v, this.map.get("k2"));
}
@Test
public void operator_removeMapPair_0() {
String v = UUID.randomUUID().toString();
boolean o;
o = operator_remove(this.map, new Pair<String, String>("k3", v));
assertFalse(o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
}
@Test
public void operator_removeMapPair_1() {
String v = UUID.randomUUID().toString();
boolean o;
o = operator_remove(this.map, new Pair<String, String>("k2", v));
assertFalse(o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
}
@Test
public void operator_removeMapPair_2() {
String v = UUID.randomUUID().toString();
boolean o;
o = operator_remove(this.map, new Pair<String, String>("k2", new String(this.value2)));
assertTrue(o);
assertEquals(1, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertNull(this.map.get("k2"));
}
@Test
public void operator_plusMapPair_0() {
String v = UUID.randomUUID().toString();
Map<String, String> o;
o = operator_plus(this.map, new Pair<String, String>("k3", v));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertEquals(3, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertEquals(v, o.get("k3"));
}
@Test
public void operator_plusMapPair_1() {
String v = UUID.randomUUID().toString();
Map<String, String> o = operator_plus(this.map, new Pair<String, String>("k2", v));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNull(this.map.get("k3"));
assertEquals(2, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(v, o.get("k2"));
assertNull(o.get("k3"));
}
@Test
public void operator_minusMapPair_0() {
String v = UUID.randomUUID().toString();
Map<String, String> o;
o = operator_minus(this.map, new Pair<String, String>("k3", v));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNull(this.map.get("k3"));
assertEquals(2, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertNull(o.get("k3"));
}
@Test
public void operator_minusMapPair_1() {
String v = UUID.randomUUID().toString();
Map<String, String> o = operator_minus(this.map, new Pair<String, String>("k2", v));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNull(this.map.get("k3"));
assertEquals(1, o.size());
assertEquals(this.value1, o.get("k1"));
assertNull(o.get("k2"));
assertNull(o.get("k3"));
}
@Test
public void operator_minusMapPair_3() {
String v = UUID.randomUUID().toString();
Map<String, String> o = operator_minus(this.map, new Pair<String, String>("k2", new String(this.value2)));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNull(this.map.get("k3"));
assertEquals(1, o.size());
assertEquals(this.value1, o.get("k1"));
assertNull(o.get("k2"));
assertNull(o.get("k3"));
}
@Test
public void operator_plusMapMap_0() {
String v1 = UUID.randomUUID().toString();
String v2 = UUID.randomUUID().toString();
String v3 = UUID.randomUUID().toString();
Map<String, String> o;
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("k3", v1);
tmp.put("k4", v2);
tmp.put("k5", v3);
o = operator_plus(this.map, tmp);
assertNotNull(o);
assertNotSame(this.map, o);
assertNotSame(tmp, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertEquals(3, tmp.size());
assertEquals(v1, tmp.get("k3"));
assertEquals(v2, tmp.get("k4"));
assertEquals(v3, tmp.get("k5"));
assertEquals(5, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertEquals(v1, o.get("k3"));
assertEquals(v2, o.get("k4"));
assertEquals(v3, o.get("k5"));
}
@Test
public void operator_plusMapMap_1() {
String v1 = UUID.randomUUID().toString();
String v2 = UUID.randomUUID().toString();
String v3 = UUID.randomUUID().toString();
Map<String, String> o;
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("k3", v1);
tmp.put("k4", v2);
tmp.put("k5", v3);
o = operator_plus(tmp, this.map);
assertNotNull(o);
assertNotSame(this.map, o);
assertNotSame(tmp, o);
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertEquals(3, tmp.size());
assertEquals(v1, tmp.get("k3"));
assertEquals(v2, tmp.get("k4"));
assertEquals(v3, tmp.get("k5"));
assertEquals(5, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertEquals(v1, o.get("k3"));
assertEquals(v2, o.get("k4"));
assertEquals(v3, o.get("k5"));
}
@Test
public void operator_plusMapMap_2() {
String v1 = UUID.randomUUID().toString();
String v2 = UUID.randomUUID().toString();
String v3 = UUID.randomUUID().toString();
Map<String, String> o;
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("k3", v1);
tmp.put("k1", v2);
tmp.put("k5", v3);
o = operator_plus(this.map, tmp);
assertNotNull(o);
assertEquals(4, o.size());
assertEquals(v2, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertEquals(v1, o.get("k3"));
assertNull(o.get("k4"));
assertEquals(v3, o.get("k5"));
}
@Test
public void operator_plusMapMap_3() {
String v1 = UUID.randomUUID().toString();
String v2 = UUID.randomUUID().toString();
String v3 = UUID.randomUUID().toString();
Map<String, String> o;
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("k3", v1);
tmp.put("k1", v2);
tmp.put("k5", v3);
o = operator_plus(tmp, this.map);
assertNotNull(o);
assertEquals(4, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
assertEquals(v1, o.get("k3"));
assertNull(o.get("k4"));
assertEquals(v3, o.get("k5"));
}
@Test
public void operator_removeMapK_0() {
String o = operator_remove(this.map, "k0");
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNull(o);
}
@Test
public void operator_removeMapK_1() {
String o = operator_remove(this.map, "k1");
assertEquals(1, this.map.size());
assertNull(this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertEquals(this.value1, o);
}
@Test
public void operator_removeMapK_2() {
String o = operator_remove(this.map, "k2");
assertEquals(1, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertNull(this.map.get("k2"));
assertEquals(this.value2, o);
}
@Test
public void operator_removeMapK_3() {
String o1 = operator_remove(this.map, "k2");
String o2 = operator_remove(this.map, "k1");
assertEquals(0, this.map.size());
assertNull(this.map.get("k1"));
assertNull(this.map.get("k2"));
assertEquals(this.value2, o1);
assertEquals(this.value1, o2);
}
@Test
public void operator_removeMapIterable() {
List<String> m = new ArrayList<String>();
m.add("k0");
m.add("k1");
operator_remove(this.map, m);
assertEquals(1, this.map.size());
assertNull(this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
}
@Test
public void operator_minusMapK_0() {
Map<String, String> o = operator_minus(this.map, "k0");
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(2, o.size());
assertEquals(this.value1, o.get("k1"));
assertEquals(this.value2, o.get("k2"));
}
@Test
public void operator_minusMapK_1() {
Map<String, String> o = operator_minus(this.map, "k2");
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNotNull(o);
assertNotSame(this.map, o);
assertEquals(1, o.size());
assertEquals(this.value1, o.get("k1"));
assertNull(o.get("k2"));
}
@Test
public void operator_minusMapK_2() {
Map<String, String> o1 = operator_minus(this.map, "k2");
Map<String, String> o2 = operator_minus(o1, "k1");
assertEquals(2, this.map.size());
assertEquals(this.value1, this.map.get("k1"));
assertEquals(this.value2, this.map.get("k2"));
assertNotNull(o1);
assertNotSame(this.map, o1);
assertEquals(1, o1.size());
assertEquals(this.value1, o1.get("k1"));
assertNull(o1.get("k2"));
assertNotNull(o2);
assertNotSame(this.map, o2);
assertEquals(0, o2.size());
assertNull(o2.get("k1"));
assertNull(o2.get("k2"));
}
}