diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A6_T1.js b/test/language/expressions/postfix-decrement/S11.3.2_A6_T1.js
new file mode 100755
index 0000000000000000000000000000000000000000..960a0b4da7ae01d3027ce3d61a8d07beab985836
--- /dev/null
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A6_T1.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x-- evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the null value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = null;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  base[prop()]--;
+});
+
+assert.throws(TypeError, function() {
+  var base = null;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  base[prop]--;
+});
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A6_T2.js b/test/language/expressions/postfix-decrement/S11.3.2_A6_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..9a033e79f7a17d21bb36a371a0d52acb8831c1f0
--- /dev/null
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A6_T2.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x-- evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the undefined value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = undefined;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  base[prop()]--;
+});
+
+assert.throws(TypeError, function() {
+  var base = undefined;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  base[prop]--;
+});
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js b/test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..951c72303e1ba3a5eddf8c0504f6b4ebe8c1aa12
--- /dev/null
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A6_T3.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x-- evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. ToPropertyKey(prop) is not called multiple
+    times.
+---*/
+
+var propKeyEvaluated = false;
+var base = {};
+var prop = {
+  toString: function() {
+    assert(!propKeyEvaluated);
+    propKeyEvaluated = true;
+    return 1;
+  }
+};
+
+base[prop]--;
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A6_T1.js b/test/language/expressions/postfix-increment/S11.3.1_A6_T1.js
new file mode 100755
index 0000000000000000000000000000000000000000..077c0b26fcdab4636f7810ef90aceacda1a862e9
--- /dev/null
+++ b/test/language/expressions/postfix-increment/S11.3.1_A6_T1.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x++ evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the null value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = null;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  base[prop()]++;
+});
+
+assert.throws(TypeError, function() {
+  var base = null;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  base[prop]++;
+});
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A6_T2.js b/test/language/expressions/postfix-increment/S11.3.1_A6_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..4eb9d5b712c11377cd64c02fe763c11a0eb75c0c
--- /dev/null
+++ b/test/language/expressions/postfix-increment/S11.3.1_A6_T2.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x++ evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the undefined value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = undefined;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  base[prop()]++;
+});
+
+assert.throws(TypeError, function() {
+  var base = undefined;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  base[prop]++;
+});
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A6_T3.js b/test/language/expressions/postfix-increment/S11.3.1_A6_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..4611e4551b2b5960aef8e0cf5af08d1c4110dff7
--- /dev/null
+++ b/test/language/expressions/postfix-increment/S11.3.1_A6_T3.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator x++ evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. ToPropertyKey(prop) is not called multiple
+    times.
+---*/
+
+var propKeyEvaluated = false;
+var base = {};
+var prop = {
+  toString: function() {
+    assert(!propKeyEvaluated);
+    propKeyEvaluated = true;
+    return 1;
+  }
+};
+
+base[prop]++;
diff --git a/test/language/expressions/prefix-decrement/S11.4.5_A6_T1.js b/test/language/expressions/prefix-decrement/S11.4.5_A6_T1.js
new file mode 100755
index 0000000000000000000000000000000000000000..567a7534a5c11cc5ebc33059d70479b30063a88b
--- /dev/null
+++ b/test/language/expressions/prefix-decrement/S11.4.5_A6_T1.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator --x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the null value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = null;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  --base[prop()];
+});
+
+assert.throws(TypeError, function() {
+  var base = null;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  --base[prop];
+});
diff --git a/test/language/expressions/prefix-decrement/S11.4.5_A6_T2.js b/test/language/expressions/prefix-decrement/S11.4.5_A6_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..7eec750dadb925c93fb13801f2394e1c51387412
--- /dev/null
+++ b/test/language/expressions/prefix-decrement/S11.4.5_A6_T2.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator --x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the undefined value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = undefined;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  --base[prop()];
+});
+
+assert.throws(TypeError, function() {
+  var base = undefined;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  --base[prop];
+});
diff --git a/test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js b/test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..592c328607c042c9a00132a3602ea949141a99e8
--- /dev/null
+++ b/test/language/expressions/prefix-decrement/S11.4.5_A6_T3.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator --x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. ToPropertyKey(prop) is not called multiple
+    times.
+---*/
+
+var propKeyEvaluated = false;
+var base = {};
+var prop = {
+  toString: function() {
+    assert(!propKeyEvaluated);
+    propKeyEvaluated = true;
+    return 1;
+  }
+};
+
+--base[prop];
diff --git a/test/language/expressions/prefix-increment/S11.4.4_A6_T1.js b/test/language/expressions/prefix-increment/S11.4.4_A6_T1.js
new file mode 100755
index 0000000000000000000000000000000000000000..bce4f1a1ec10f2a465723d75a1f9e71ce326da79
--- /dev/null
+++ b/test/language/expressions/prefix-increment/S11.4.4_A6_T1.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator ++x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the null value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = null;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  ++base[prop()];
+});
+
+assert.throws(TypeError, function() {
+  var base = null;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  ++base[prop];
+});
diff --git a/test/language/expressions/prefix-increment/S11.4.4_A6_T2.js b/test/language/expressions/prefix-increment/S11.4.4_A6_T2.js
new file mode 100755
index 0000000000000000000000000000000000000000..e2b5e85e2112deea3a75d4bac71e5fdf9f233f2d
--- /dev/null
+++ b/test/language/expressions/prefix-increment/S11.4.4_A6_T2.js
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator ++x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. base is the undefined value.
+---*/
+
+function DummyError() { }
+
+assert.throws(DummyError, function() {
+  var base = undefined;
+  var prop = function() {
+    throw new DummyError();
+  };
+
+  ++base[prop()];
+});
+
+assert.throws(TypeError, function() {
+  var base = undefined;
+  var prop = {
+    toString: function() {
+      $ERROR("property key evaluated");
+    }
+  };
+
+  ++base[prop];
+});
diff --git a/test/language/expressions/prefix-increment/S11.4.4_A6_T3.js b/test/language/expressions/prefix-increment/S11.4.4_A6_T3.js
new file mode 100755
index 0000000000000000000000000000000000000000..94473bb28802173a163f60b594c108f24f9202ad
--- /dev/null
+++ b/test/language/expressions/prefix-increment/S11.4.4_A6_T3.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+info: Operator ++x evaluates its reference expression once.
+description: >
+    The operand expression is evaluated exactly once. Operand expression is
+    MemberExpression: base[prop]. ToPropertyKey(prop) is not called multiple
+    times.
+---*/
+
+var propKeyEvaluated = false;
+var base = {};
+var prop = {
+  toString: function() {
+    assert(!propKeyEvaluated);
+    propKeyEvaluated = true;
+    return 1;
+  }
+};
+
+++base[prop];