var tape = require('tape')
var render = require('../render')

tape('render', function(test) {

  test.same(
    render(
      { content: [ 'a b c' ] },
      { content: [ 'a d' ] }),
    [ { splits:
          [ { text: 'a' },
            { text: ' ' },
            { text: 'b', del: true},
            { text: ' ', del: true},
            { text: 'd', ins: true},
            { text: 'c', del: true} ] } ])

  test.same(
    render(
      { content: [ 'A B C' ] },
      { content: [ 'A C' ] }),
    [ { splits:
          [ { text: 'A' },
            { text: ' ' },
            { text: 'B', del: true},
            { text: ' ', del: true},
            { text: 'C' } ] } ])

  test.same(
    render(
      { content: [ 'A B C' ] },
      { content: [ 'A B C D' ] }),
    [ { splits:
          [ { text: 'A' },
            { text: ' ' },
            { text: 'B' },
            { text: ' ' },
            { text: 'C' },
            { text: ' ', ins: true },
            { text: 'D', ins: true } ] } ])

  test.same(
    render(
      { content: [ { use: 'Seller' } , ' pays.' ] },
      { content: [ { use: 'Buyer' } , ' pays.' ] }),
    [ { use: 'Buyer', ins: true },
      { use: 'Seller', del: true },
      { splits:
          [ { text: ' ' },
            { text: 'pays' },
            { text: '.' } ] } ])

  test.same(
    render(
      { content: [ { use: 'Seller' } , ' shall pay all tax.' ] },
      { content: [ 'The ', { use: 'Buyer' } , ' shall pay no tax.' ] }),
    [ { splits:
          [ { text: 'The' },
            { text: ' ' } ],
        ins: true },
      { use: 'Buyer', ins: true },
      { use: 'Seller', del: true },
      { splits:
          [ { text: ' ' },
            { text: 'shall' },
            { text: ' ' },
            { text: 'pay' },
            { text: ' ' },
            { text: 'no', ins: true },
            { text: 'all', del: true},
            { text: ' ' },
            { text: 'tax' },
            { text: '.' } ] } ])

  test.same(
    render(
      { content: [ 'The ', { use: 'Buyer' } , ' shall pay no tax.' ] },
      { content: [ { use: 'Seller' } , ' shall pay all tax.' ] }),
    [ { splits:
          [ { text: 'The' },
            { text: ' ' } ],
        del: true },
      { use: 'Seller', ins: true },
      { use: 'Buyer', del: true },
      { splits:
          [ { text: ' ' },
            { text: 'shall' },
            { text: ' ' },
            { text: 'pay' },
            { text: ' ' },
            { text: 'all', ins: true},
            { text: 'no', del: true },
            { text: ' ' },
            { text: 'tax' },
            { text: '.' } ] } ])

  test.same(
    render(
      { content: [ { form: { content: [ 'a b c' ] } } ] },
      { content: [ { form: { content: [ 'a d' ]   } } ] }),
    [ { splits:
          [ { text: 'a' },
            { text: ' ' },
            { text: 'b', del: true},
            { text: ' ', del: true},
            { text: 'd', ins: true},
            { text: 'c', del: true} ] } ])

  test.end() })

@@ -2977,24 +2977,500 @@
 ue%7D %5D %7D %5D)%0A%0A
+  test.same(%0A    render(%0A      %7B content: %5B 'Hello ', %7B form: %7B content: %5B 'a b c' %5D %7D %7D %5D %7D,%0A      %7B content: %5B %7B form: %7B content: %5B 'a d' %5D   %7D %7D %5D %7D),%0A    %5B %7B splits:%0A          %5B %7B text: 'Hello' %7D,%0A            %7B text: ' ' %7D %5D,%0A        del: true %7D,%0A      %7B splits:%0A          %5B %7B text: 'a' %7D,%0A            %7B text: ' ' %7D,%0A            %7B text: 'b', del: true%7D,%0A            %7B text: ' ', del: true%7D,%0A            %7B text: 'd', ins: true%7D,%0A            %7B text: 'c', del: true%7D %5D %7D %5D)%0A%0A
   test.end()

Test changes before and within a child form