(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: 
            {
              (SQ <"test parsing of svndiff0 files\n"> <"\n"> 
                <"Using the \"test-svn-fe -d\" helper, check that svn-fe correctly\n"> <"interprets deltas using various facilities (some from the spec,\n"> 
                <"some only learned from practice).\n">
              )
            }
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (SimpleCommand redirects:[(Redir op_id:Redir_Great fd:-1 arg_word:{(empty)} spids:[18])])
    (SimpleCommand
      words: [{(printf)} {(foo)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(preimage)} spids:[25])]
    )
    (C {(test_expect_success)} {(SQ <"reject empty delta">)} 
      {(SQ <"\n"> <"\ttest_must_fail test-svn-fe -d preimage empty 0\n">)}
    )
    (C {(test_expect_success)} {(SQ <"delta can empty file">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ\" | q_to_nul >clear.delta &&\n"> 
          <"\ttest-svn-fe -d preimage clear.delta 4 >actual &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject svndiff2">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVN\\002\" >bad.filetype &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage bad.filetype 4\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"one-window empty delta">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s\" \"QQQQQ\" | q_to_nul >clear.onewindow &&\n"> 
          <"\ttest-svn-fe -d preimage clear.onewindow 9 >actual &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject incomplete window header">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s\" \"QQQQQ\" | q_to_nul >clear.onewindow &&\n"> 
          <"\tprintf \"SVNQ%s\" \"QQ\" | q_to_nul >clear.partialwindow &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.onewindow 6 &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.partialwindow 6\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject declared delta longer than actual delta">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s\" \"QQQQQ\" | q_to_nul >clear.onewindow &&\n"> 
          <"\tprintf \"SVNQ%s\" \"QQ\" | q_to_nul >clear.partialwindow &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.onewindow 14 &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.partialwindow 9\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"two-window empty delta">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s%s\" \"QQQQQ\" \"QQQQQ\" | q_to_nul >clear.twowindow &&\n"> 
          <"\ttest-svn-fe -d preimage clear.twowindow 14 >actual &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.twowindow 13 &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"noisy zeroes">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s\" \\\n"> 
          <"\t\t\"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRQQQQQ\" |\n"> <"\t\ttr R \"\\200\" |\n"> <"\t\tq_to_nul >clear.noisy &&\n"> <"\tlen=$(wc -c <clear.noisy) &&\n"> 
          <"\ttest-svn-fe -d preimage clear.noisy $len &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject variable-length int in magic">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNRQ\" | tr R \"\\200\" | q_to_nul >clear.badmagic &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.badmagic 5\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject truncated integer">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%s%s\" \"QQQQQ\" \"QQQQRRQ\" |\n"> <"\t\ttr R \"\\200\" |\n"> 
          <"\t\tq_to_nul >clear.fullint &&\n"> <"\tprintf \"SVNQ%s%s\" \"QQQQQ\" \"QQQQRR\" |\n"> <"\t\ttr RT \"\\201\" |\n"> 
          <"\t\tq_to_nul >clear.partialint &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.fullint 15 &&\n"> 
          <"\ttest-svn-fe -d preimage clear.fullint 16 &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.partialint 15\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"nonempty (but unused) preimage view">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b\" \"Q\\003QQQ\" | q_to_nul >clear.readpreimage &&\n"> 
          <"\ttest-svn-fe -d preimage clear.readpreimage 9 >actual &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"preimage view: right endpoint cannot backtrack">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b\" \"Q\\003QQQ\" \"Q\\002QQQ\" |\n"> 
          <"\t\tq_to_nul >clear.backtrack &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.backtrack 14\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"preimage view: left endpoint can advance">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b\" \"Q\\003QQQ\" \"\\001\\002QQQ\" |\n"> 
          <"\t\tq_to_nul >clear.preshrink &&\n"> <"\tprintf \"SVNQ%b%b\" \"Q\\003QQQ\" \"\\001\\001QQQ\" |\n"> 
          <"\t\tq_to_nul >clear.shrinkbacktrack &&\n"> <"\ttest-svn-fe -d preimage clear.preshrink 14 >actual &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.shrinkbacktrack 14 &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"preimage view: offsets compared by value">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b\" \"\\001\\001QQQ\" \"\\0200Q\\003QQQ\" |\n"> 
          <"\t\tq_to_nul >clear.noisybacktrack &&\n"> <"\tprintf \"SVNQ%b%b\" \"\\001\\001QQQ\" \"\\0200\\001\\002QQQ\" |\n"> 
          <"\t\tq_to_nul >clear.noisyadvance &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.noisybacktrack 15 &&\n"> 
          <"\ttest-svn-fe -d preimage clear.noisyadvance 15 &&\n"> <"\ttest_cmp empty actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"preimage view: reject truncated preimage">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b\" \"\\010QQQQ\" | q_to_nul >clear.lateemptyread &&\n"> 
          <"\tprintf \"SVNQ%b\" \"\\010\\001QQQ\" | q_to_nul >clear.latenonemptyread &&\n"> <"\tprintf \"SVNQ%b\" \"\\001\\010QQQ\" | q_to_nul >clear.longread &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.lateemptyread 9 &&\n"> <"\ttest_must_fail test-svn-fe -d preimage clear.latenonemptyread 9 &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage clear.longread 9\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"forbid unconsumed inline data">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%s%b%s\" \"QQQQ\\003\" \"bar\" \"QQQQ\\001\" \"x\" |\n"> 
          <"\t\tq_to_nul >inline.clear &&\n"> <"\ttest_must_fail test-svn-fe -d preimage inline.clear 18 >actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject truncated inline data">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%s\" \"QQQQ\\003\" \"b\" | q_to_nul >inline.trunc &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage inline.trunc 10\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reject truncated inline data (after instruction section)">)} 
      {
        (SQ <"\n"> 
          <
"\tprintf \"SVNQ%b%b%s\" \"QQ\\001\\001\\003\" \"\\0201\" \"b\" | q_to_nul >insn.trunc &&\n"
          > <"\ttest_must_fail test-svn-fe -d preimage insn.trunc 11\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <copyfrom_data>)} 
      {
        (SQ <"\n"> <"\techo hi >expect &&\n"> 
          <
"\tprintf \"SVNQ%b%b%b\" \"QQ\\003\\001\\003\" \"\\0203\" \"hi\\n\" | q_to_nul >copydat &&\n"
          > <"\ttest-svn-fe -d preimage copydat 13 >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"multiple copyfrom_data">)} 
      {
        (SQ <"\n"> <"\techo hi >expect &&\n"> 
          <"\tprintf \"SVNQ%b%b%b%b%b\" \"QQ\\003\\002\\003\" \"\\0201\\0202\" \"hi\\n\" \\\n"> <"\t\t\"QQQ\\002Q\" \"\\0200Q\" | q_to_nul >copy.multi &&\n"> <"\tlen=$(wc -c <copy.multi) &&\n"> 
          <"\ttest-svn-fe -d preimage copy.multi $len >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"incomplete multiple insn">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b%b\" \"QQ\\003\\002\\003\" \"\\0203\\0200\" \"hi\\n\" |\n"> 
          <"\t\tq_to_nul >copy.partial &&\n"> <"\tlen=$(wc -c <copy.partial) &&\n"> <"\ttest_must_fail test-svn-fe -d preimage copy.partial $len\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"catch attempt to copy missing data">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b%s%b%s\" \"QQ\\002\\002\\001\" \"\\0201\\0201\" \"X\" \\\n"> 
          <"\t\t\t\"QQQQ\\002\" \"YZ\" |\n"> <"\t\tq_to_nul >copy.incomplete &&\n"> <"\tlen=$(wc -c <copy.incomplete) &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage copy.incomplete $len\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"copyfrom target to repeat data">)} 
      {
        (SQ <"\n"> <"\tprintf foofoo >expect &&\n"> 
          <"\tprintf \"SVNQ%b%b%s\" \"QQ\\006\\004\\003\" \"\\0203\\0100\\003Q\" \"foo\" |\n"> <"\t\tq_to_nul >copytarget.repeat &&\n"> <"\tlen=$(wc -c <copytarget.repeat) &&\n"> 
          <"\ttest-svn-fe -d preimage copytarget.repeat $len >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"copyfrom target out of order">)} 
      {
        (SQ <"\n"> <"\tprintf foooof >expect &&\n"> <"\tprintf \"SVNQ%b%b%s\" \\\n"> 
          <"\t\t\"QQ\\006\\007\\003\" \"\\0203\\0101\\002\\0101\\001\\0101Q\" \"foo\" |\n"> <"\t\tq_to_nul >copytarget.reverse &&\n"> <"\tlen=$(wc -c <copytarget.reverse) &&\n"> 
          <"\ttest-svn-fe -d preimage copytarget.reverse $len >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"catch copyfrom future">)} 
      {
        (SQ <"\n"> 
          <"\tprintf \"SVNQ%b%b%s\" \"QQ\\004\\004\\003\" \"\\0202\\0101\\002\\0201\" \"XYZ\" |\n"> <"\t\tq_to_nul >copytarget.infuture &&\n"> <"\tlen=$(wc -c <copytarget.infuture) &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage copytarget.infuture $len\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"copy to sustain">)} 
      {
        (SQ <"\n"> <"\tprintf XYXYXYXYXYXZ >expect &&\n"> 
          <"\tprintf \"SVNQ%b%b%s\" \"QQ\\014\\004\\003\" \"\\0202\\0111Q\\0201\" \"XYZ\" |\n"> <"\t\tq_to_nul >copytarget.sustain &&\n"> <"\tlen=$(wc -c <copytarget.sustain) &&\n"> 
          <"\ttest-svn-fe -d preimage copytarget.sustain $len >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"catch copy that overflows">)} 
      {
        (SQ <"\n"> <"\tprintf \"SVNQ%b%b%s\" \"QQ\\003\\003\\001\" \"\\0201\\0177Q\" X |\n"> 
          <"\t\tq_to_nul >copytarget.overflow &&\n"> <"\tlen=$(wc -c <copytarget.overflow) &&\n"> 
          <"\ttest_must_fail test-svn-fe -d preimage copytarget.overflow $len\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"copyfrom source">)} 
      {
        (SQ <"\n"> <"\tprintf foo >expect &&\n"> 
          <
"\tprintf \"SVNQ%b%b\" \"Q\\003\\003\\002Q\" \"\\003Q\" | q_to_nul >copysource.all &&\n"
          > <"\ttest-svn-fe -d preimage copysource.all 11 >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"copy backwards">)} 
      {
        (SQ <"\n"> <"\tprintf oof >expect &&\n"> 
          <"\tprintf \"SVNQ%b%b\" \"Q\\003\\003\\006Q\" \"\\001\\002\\001\\001\\001Q\" |\n"> <"\t\tq_to_nul >copysource.rev &&\n"> <"\ttest-svn-fe -d preimage copysource.rev 15 >actual &&\n"> 
          <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"offsets are relative to window">)} 
      {
        (SQ <"\n"> <"\tprintf fo >expect &&\n"> 
          <"\tprintf \"SVNQ%b%b%b%b\" \"Q\\003\\001\\002Q\" \"\\001Q\" \\\n"> <"\t\t\"\\002\\001\\001\\002Q\" \"\\001Q\" |\n"> <"\t\tq_to_nul >copysource.two &&\n"> 
          <"\ttest-svn-fe -d preimage copysource.two 18 >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"example from notes/svndiff">)} 
      {
        (SQ <"\n"> <"\tprintf aaaaccccdddddddd >expect &&\n"> <"\tprintf aaaabbbbcccc >source &&\n"> 
          <"\tprintf \"SVNQ%b%b%s\" \"Q\\014\\020\\007\\001\" \\\n"> <"\t\t\"\\004Q\\004\\010\\0201\\0107\\010\" d |\n"> <"\t\tq_to_nul >delta.example &&\n"> 
          <"\tlen=$(wc -c <delta.example) &&\n"> <"\ttest-svn-fe -d source delta.example $len >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_done)})
  ]
)