add "zero cost command" synth test

PiperOrigin-RevId: 547790839
diff --git a/java/org/brotli/dec/SynthTest.java b/java/org/brotli/dec/SynthTest.java
index 4fde1b7..d6be0c6 100644
--- a/java/org/brotli/dec/SynthTest.java
+++ b/java/org/brotli/dec/SynthTest.java
@@ -12,7 +12,6 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.util.Arrays;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -63,6 +62,14 @@
     }
   }
 
+  private static String times(int count, String str) {
+    StringBuilder out = new StringBuilder(count * str.length());
+    for (int i = 0; i < count; ++i) {
+      out.append(str);
+    }
+    return out.toString();
+  }
+
 /* GENERATED CODE START */
 
   @Test
@@ -575,7 +582,8 @@
      */
       compressed,
       true,
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaatime"
+      times(28, "a")
+      + "time"
     );
   }
 
@@ -839,18 +847,8 @@
      */
       compressed,
       true,
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb"
+      times(1022, "a")
+      + times(10, "b")
     );
   }
 
@@ -878,18 +876,8 @@
      */
       compressed,
       true,
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-      + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb"
+      times(1022, "a")
+      + times(10, "b")
     );
   }
 
@@ -2545,13 +2533,7 @@
      */
       compressed,
       true,
-      "abababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababababababababababababababababababab"
-      + "ababababababababababababababababababababababababababababab"
+      times(300, "ab")
     );
   }
 
@@ -2769,8 +2751,6 @@
       (byte) 0x37, (byte) 0x38, (byte) 0x39, (byte) 0x41, (byte) 0x42, (byte) 0x43, (byte) 0x44,
       (byte) 0x45, (byte) 0x46, (byte) 0x03
     };
-    /* This line is added manually. */
-    char[] stub = new char[8388602]; Arrays.fill(stub, 'c'); String hex = "0123456789ABCDEF";
     checkSynth(
     /*
      * main_header: 24
@@ -2823,8 +2803,10 @@
      */
       compressed,
       true,
-      /* This line is modified manually. */
-      "abc" + new String(stub) + "abc" + hex + hex + hex
+      "abc"
+      + times(8388602, "c")
+      + "abc"
+      + times(3, "0123456789ABCDEF")
     );
   }
 
@@ -2908,6 +2890,28 @@
   }
 
   @Test
+  public void testZeroCostCommand() {
+    byte[] compressed = {
+      (byte) 0xa1, (byte) 0xf8, (byte) 0x1f, (byte) 0x00, (byte) 0x00, (byte) 0xa1, (byte) 0x12,
+      (byte) 0x82, (byte) 0x04, (byte) 0x00
+    };
+    checkSynth(
+    /*
+     * main_header: 10
+     * metablock_header_begin: 1, 0, 1024, 0  // last, not empty, length, compressed
+     * metablock_header_trivial_context
+     * huffman_simple: 0,1,256, 42  // literal: any
+     * huffman_simple: 0,1,704, 130  // command: insert = 0, copy = 4, distance_code = -1
+     * huffman_simple: 0,1,64, 0 // distance: last
+     * // 256 0-bit commands with direct distances
+     */
+      compressed,
+      true,
+      times(256, "left")
+    );
+  }
+
+  @Test
   public void testZeroCostLiterals() {
     byte[] compressed = {
       (byte) 0x9b, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x20, (byte) 0x54,
@@ -2915,8 +2919,6 @@
       (byte) 0x12, (byte) 0x00, (byte) 0x00, (byte) 0x77, (byte) 0xda, (byte) 0xcc, (byte) 0xe1,
       (byte) 0x7b, (byte) 0xfa, (byte) 0x0f
     };
-    /* This line is added manually. */
-    char[] expected = new char[16777216]; Arrays.fill(expected, '*');
     checkSynth(
     /*
      * main_header
@@ -2930,8 +2932,7 @@
      */
       compressed,
       true,
-      /* This line is modified manually. */
-      new String(expected)
+      times(16777216, "*")
     );
   }
 
diff --git a/js/decode_synth_test.js b/js/decode_synth_test.js
index 34ab537..197e0ff 100644
--- a/js/decode_synth_test.js
+++ b/js/decode_synth_test.js
@@ -27,11 +27,11 @@
 /**
  * NB: String.prototype.repeat causes "Maximum call stack size exceeded".
  *
- * @param {string} char
  * @param {number} count
+ * @param {string} char
  * @return {string}
  */
-function repeat(char, count) {
+function times(count, char) {
   return char.repeat(count);
 }
 
@@ -495,7 +495,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaatime'
+    times(28, 'a')
+    + 'time'
   );
 },
 
@@ -737,21 +738,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaabbbbbbbbbb'
+    times(1022, 'a')
+    + times(10, 'b')
   );
 },
 
@@ -774,21 +762,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaabbbbbbbbbb'
+    times(1022, 'a')
+    + times(10, 'b')
   );
 },
 
@@ -1918,15 +1893,7 @@
      */
     compressed,
     true,
-    'ababababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'ababababababababababab'
+    times(300, 'ab')
   );
 },
 
@@ -2126,8 +2093,6 @@
     0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45,
     0x46, 0x03
   ];
-  /* This line is added manually. */
-  const stub = repeat("c", 8388602); const hex = "0123456789ABCDEF";
   checkSynth(
     /*
      * main_header: 24
@@ -2180,8 +2145,10 @@
      */
     compressed,
     true,
-    /* This line is modified manually. */
-    "abc" + stub + "abc" + repeat(hex, 3)
+    'abc'
+    + times(8388602, 'c')
+    + 'abc'
+    + times(3, '0123456789ABCDEF')
   );
 },
 
@@ -2258,13 +2225,31 @@
   );
 },
 
+testZeroCostCommand() {
+  const compressed = [
+    0xa1, 0xf8, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x00
+  ];
+  checkSynth(
+    /*
+     * main_header: 10
+     * metablock_header_begin: 1, 0, 1024, 0  // last, not empty, length, compressed
+     * metablock_header_trivial_context
+     * huffman_simple: 0,1,256, 42  // literal: any
+     * huffman_simple: 0,1,704, 130  // command: insert = 0, copy = 4, distance_code = -1
+     * huffman_simple: 0,1,64, 0 // distance: last
+     * // 256 0-bit commands with direct distances
+     */
+    compressed,
+    true,
+    times(256, 'left')
+  );
+},
+
 testZeroCostLiterals() {
   const compressed = [
     0x9b, 0xff, 0xff, 0xff, 0x00, 0x20, 0x54, 0x00, 0x00, 0x38, 0xd8, 0x32,
     0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xcc, 0xe1, 0x7b, 0xfa, 0x0f
   ];
-  /* This line is added manually. */
-  const expected = repeat("*", 16777216);
   checkSynth(
     /*
      * main_header
@@ -2278,8 +2263,7 @@
      */
     compressed,
     true,
-    /* This line is modified manually. */
-    expected
+    times(16777216, '*')
   );
 },
 
diff --git a/js/decode_synth_test.ts b/js/decode_synth_test.ts
index 4e6b8b6..8a365cd 100644
--- a/js/decode_synth_test.ts
+++ b/js/decode_synth_test.ts
@@ -25,7 +25,7 @@
 /**
  * NB: String.prototype.repeat causes "Maximum call stack size exceeded".
  */
-function repeat(char:string, count: number): string {
+function times(count: number, char:string): string {
   return char.repeat(count);
 }
 
@@ -485,7 +485,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaatime'
+    times(28, 'a')
+    + 'time'
   );
 },
 
@@ -727,21 +728,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaabbbbbbbbbb'
+    times(1022, 'a')
+    + times(10, 'b')
   );
 },
 
@@ -764,21 +752,8 @@
      */
     compressed,
     true,
-    'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
-    + 'aaaaaaaaaaaabbbbbbbbbb'
+    times(1022, 'a')
+    + times(10, 'b')
   );
 },
 
@@ -1908,15 +1883,7 @@
      */
     compressed,
     true,
-    'ababababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'abababababababababababababababababababababababababababababababababababab'
-    + 'ababababababababababab'
+    times(300, 'ab')
   );
 },
 
@@ -2116,8 +2083,6 @@
     0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45,
     0x46, 0x03
   ];
-  /* This line is added manually. */
-  const stub = repeat("c", 8388602); const hex = "0123456789ABCDEF";
   checkSynth(
     /*
      * main_header: 24
@@ -2170,8 +2135,10 @@
      */
     compressed,
     true,
-    /* This line is modified manually. */
-    "abc" + stub + "abc" + repeat(hex, 3)
+    'abc'
+    + times(8388602, 'c')
+    + 'abc'
+    + times(3, '0123456789ABCDEF')
   );
 },
 
@@ -2248,13 +2215,31 @@
   );
 },
 
+testZeroCostCommand() {
+  const compressed = [
+    0xa1, 0xf8, 0x1f, 0x00, 0x00, 0xa1, 0x12, 0x82, 0x04, 0x00
+  ];
+  checkSynth(
+    /*
+     * main_header: 10
+     * metablock_header_begin: 1, 0, 1024, 0  // last, not empty, length, compressed
+     * metablock_header_trivial_context
+     * huffman_simple: 0,1,256, 42  // literal: any
+     * huffman_simple: 0,1,704, 130  // command: insert = 0, copy = 4, distance_code = -1
+     * huffman_simple: 0,1,64, 0 // distance: last
+     * // 256 0-bit commands with direct distances
+     */
+    compressed,
+    true,
+    times(256, 'left')
+  );
+},
+
 testZeroCostLiterals() {
   const compressed = [
     0x9b, 0xff, 0xff, 0xff, 0x00, 0x20, 0x54, 0x00, 0x00, 0x38, 0xd8, 0x32,
     0x89, 0x01, 0x12, 0x00, 0x00, 0x77, 0xda, 0xcc, 0xe1, 0x7b, 0xfa, 0x0f
   ];
-  /* This line is added manually. */
-  const expected = repeat("*", 16777216);
   checkSynth(
     /*
      * main_header
@@ -2268,8 +2253,7 @@
      */
     compressed,
     true,
-    /* This line is modified manually. */
-    expected
+    times(16777216, '*')
   );
 },