Skip to content

Commit a8cbc53

Browse files
committed
Preserve insertion order in EolMap
1 parent 4343b8c commit a8cbc53

File tree

2 files changed

+22
-1
lines changed
  • plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/types
  • tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance

2 files changed

+22
-1
lines changed

plugins/org.eclipse.epsilon.eol.engine/src/org/eclipse/epsilon/eol/types/EolMap.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
package org.eclipse.epsilon.eol.types;
1313

1414
import java.util.Collection;
15+
import java.util.LinkedHashMap;
1516
import java.util.Map;
1617
import java.util.Objects;
1718
import java.util.Set;
@@ -33,7 +34,7 @@ protected EolMap(Map<K, V> mapImpl) {
3334
}
3435

3536
public EolMap() {
36-
this(new java.util.HashMap<>());
37+
this(new LinkedHashMap<K, V>());
3738
}
3839

3940
@Override

tests/org.eclipse.epsilon.eol.engine.test.acceptance/src/org/eclipse/epsilon/eol/engine/test/acceptance/CollectionsTests.eol

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,3 +552,23 @@ operation emptyMapKeyToString(){
552552
operation emptyMapValueToString(){
553553
assertEquals("Map {1->\"\"}", Map{1=""}.asString());
554554
}
555+
556+
@test
557+
operation setPreservesInsertionOrder() {
558+
var s : new Set;
559+
var items = Sequence{5, 3, 2, 7};
560+
for (item in items) {
561+
s.add(item);
562+
}
563+
assertEquals(items, s.asSequence());
564+
}
565+
566+
@test
567+
operation mapPreservesInsertionOrder() {
568+
var m : new Map;
569+
var keys = Sequence{5, 3, 2, 7};
570+
for (k in keys) {
571+
m.put(k, k+1);
572+
}
573+
assertEquals(keys, m.keySet().asSequence());
574+
}

0 commit comments

Comments
 (0)