/tst/org/diffkit/diff/sns/tst/TestFormatter.groovy

http://diffkit.googlecode.com/ · Groovy · 74 lines · 44 code · 12 blank · 18 comment · 2 complexity · fc68500230dd0eac8c35387aaf64540e MD5 · raw file

  1. /**
  2. * Copyright 2010-2011 Joseph Panico
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. package org.diffkit.diff.sns.tst
  17. import org.diffkit.diff.engine.DKColumnComparison
  18. import org.diffkit.diff.engine.DKColumnDiffRow
  19. import org.diffkit.diff.engine.DKColumnModel
  20. import org.diffkit.diff.engine.DKContext
  21. import org.diffkit.diff.engine.DKRowDiff
  22. import org.diffkit.diff.engine.DKSide;
  23. import org.diffkit.diff.engine.DKStandardTableComparison
  24. import org.diffkit.diff.engine.DKTableModel;
  25. import org.diffkit.diff.engine.DKDiff;
  26. import org.diffkit.diff.sns.DKDefaultFormatter;
  27. import org.diffkit.diff.diffor.DKEqualsDiffor
  28. import groovy.util.GroovyTestCase;
  29. /**
  30. * @author jpanico
  31. */
  32. public class TestFormatter extends GroovyTestCase {
  33. public void testDefaultFormatter(){
  34. Object[] row = ['1111', '1111', 1]
  35. def plan = this.createSimplePlan()
  36. def keyValues = plan.getRowKeyValues( row, DKSide.LEFT_INDEX)
  37. def displayValues = plan.getRowDisplayValues( row, DKSide.LEFT_INDEX )
  38. DKRowDiff rowDiff = [1, row, DKSide.LEFT, plan]
  39. def context = new DKContext()
  40. String formatted = DKDefaultFormatter.instance.formatRowDiff(rowDiff, context)
  41. assert formatted == '!{column2=1111, column3=1}\n>'
  42. DKColumnDiffRow diffRow = [1, row, row, plan]
  43. def columnDiff = diffRow.createDiff(1, '1111', 'xxxx')
  44. formatted = DKDefaultFormatter.instance.formatColumnDiff(columnDiff, context)
  45. println "formatted->$formatted"
  46. assert formatted == '@{column2=1111, column3=1}\ncolumn2\n<1111\n>xxxx'
  47. }
  48. private DKStandardTableComparison createSimplePlan() {
  49. DKTableModel tableModel = this.createSimpleTableModel();
  50. DKColumnComparison[] map = DKColumnComparison.createColumnPlans( tableModel,tableModel, (int[]) [1], DKEqualsDiffor.instance)
  51. DKStandardTableComparison plan = new DKStandardTableComparison(tableModel, tableModel, DKDiff.Kind.BOTH, map, (int[])[0], (int[][])[[1,2],[1,2]], (long)100)
  52. return plan
  53. }
  54. private DKTableModel createSimpleTableModel(){
  55. DKColumnModel column1 = [0, 'column1', DKColumnModel.Type.STRING]
  56. DKColumnModel column2 = [1, 'column2', DKColumnModel.Type.STRING]
  57. DKColumnModel column3 = [2, 'column3', DKColumnModel.Type.INTEGER]
  58. DKColumnModel[] columns = [column1, column2, column3]
  59. int[] key = [0,2]
  60. return new DKTableModel("simple_table_model",columns, key)
  61. }
  62. }