/*eslint-env node, mocha */
/*global expect */
/*eslint no-console: 0*/
'use strict';

import chai from 'chai'

import {plaintextDiff, diffToString} from '../src/common/util/dubdiff'

let diff = (a,b) => diffToString(plaintextDiff(a,b))

const expect = chai.expect 

describe('dubdiff', () => {

  beforeEach(() => {
  });

  it('diffs single words', ()=>{  
    expect(diff(
      'This is a smlb sentence.',
      'This is a simple sentence.'
    )).to.equal('This is a [-smlb -]{+simple +}sentence.')
  })

  it('diffs consecutive words', ()=>{  
    expect(diff(
      'This is a smlb sentnce with no errors.',
      'This is a simple sentence with no errors.'
    )).to.equal('This is a [-smlb sentnce -]{+simple sentence +}with no errors.')
  })

  it('diffs with word deletion', ()=>{  
    expect(diff(
      'Gonna delete a word.',
      'Gonna delete word.'
    )).to.equal('Gonna delete [-a -]word.')
  })
  it('diffs with word insertion', ()=>{  
    expect(diff(
      'Gonna add word.',
      'Gonna add a word.'
    )).to.equal('Gonna add {+a +}word.')
  })
  it('diffs accross newline without weird spaces', () => {
    expect(diff(
      'This is a flawed\ncomment',
      'This is a corrected\nitem'
    )).to.equal('This is a [-flawed-]{+corrected+}\n[-comment-]{+item+}')
  })
  it('doesn\'t add spaces after newline', () => {
    expect(diff(
      '\nhere',
      '\nhere'
    )).to.equal('\nhere')
  })
  it('doesn\'t add spaces before newline', () => {
    expect(diff(
      'there\n',
      'there\n'
    )).to.equal('there\n')
  })
  it('treats punctuation separately', () => {
    expect(diff(
      'Hello world.',
      'Hello, world.'
    )).to.equal('Hello{+, +}world.')
  })
})