Artifact Content
Not logged in

Artifact e745bf699d0c81a0ddeebe32621991d1c762dee9

File test/merge3.test part of check-in [92638367d8] - Add many new test cases for 3-way merge. No new problems found. by drh on 2009-03-22 13:18:10.

#
# Copyright (c) 2009 D. Richard Hipp
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public
# License version 2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA  02111-1307, USA.
#
# Author contact information:
#   drh@hwaci.com
#   http://www.hwaci.com/drh/
#
############################################################################
#
# Tests of the 3-way merge
#

proc merge-test {testid basis v1 v2 result} {
  write_file t1 [join [string trim $basis] \n]\n
  write_file t2 [join [string trim $v1] \n]\n
  write_file t3 [join [string trim $v2] \n]\n
  fossil test-3-way-merge t1 t2 t3 t4
  set x [read_file t4]
  regsub -all {>>>>>>> BEGIN MERGE CONFLICT} $x {>} x
  regsub -all {============================} $x {=} x
  regsub -all {<<<<<<< END MERGE CONFLICT} $x {<} x
  set x [split [string trim $x] \n]
  set result [string trim $result]
  if {$x!=$result} {
    puts "  Expected \[$result\]"
    puts "       Got \[$x\]"
    test merge3-$testid 0
  } else {
    test merge3-$testid 1
  }
}

merge-test 1 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4 5 6 7 8 9
} {
  1 2 3 4 5c 6 7 8 9
} {
  1 2 3b 4 5c 6 7 8 9
}

merge-test 2 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5 6 7 8 9
} {
  1 2 3 4 5c 6 7 8 9
} {
  1 2 3b 4b 5c 6 7 8 9
}
merge-test 3 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6 7 8 9
} {
  1 2 3 4 5c 6 7 8 9
} {
  1 2 > 3b 4b 5b = 3 4 5c < 6 7 8 9
}
merge-test 4 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6b 7 8 9
} {
  1 2 3 4 5c 6 7 8 9
} {
  1 2 > 3b 4b 5b 6b = 3 4 5c 6 < 7 8 9
}
merge-test 5 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6b 7 8 9
} {
  1 2 3 4 5c 6c 7c 8 9
} {
  1 2 > 3b 4b 5b 6b 7 = 3 4 5c 6c 7c < 8 9
}
merge-test 6 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6b 7 8b 9
} {
  1 2 3 4 5c 6c 7c 8 9
} {
  1 2 > 3b 4b 5b 6b 7 = 3 4 5c 6c 7c < 8b 9
}
merge-test 7 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6b 7 8b 9
} {
  1 2 3 4 5c 6c 7c 8c 9
} {
  1 2 > 3b 4b 5b 6b 7 8b = 3 4 5c 6c 7c 8c < 9
}
merge-test 8 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5b 6b 7 8b 9b
} {
  1 2 3 4 5c 6c 7c 8c 9
} {
  1 2 > 3b 4b 5b 6b 7 8b 9b = 3 4 5c 6c 7c 8c 9 <
}
merge-test 9 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5 6 7 8b 9b
} {
  1 2 3 4 5c 6c 7c 8 9
} {
  1 2 3b 4b 5c 6c 7c 8b 9b
}

merge-test 10 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5 6 7 8b 9b
} {
  1 2 3b 4b 5 6c 7c 8 9
} {
  1 2 3b 4b 5 6c 7c 8b 9b
}
merge-test 11 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b 4b 5 6 7 8b 9b
} {
  1 2 3b 4c 5 6c 7c 8 9
} {
  1 2 > 3b 4b = 3b 4c < 5 6c 7c 8b 9b
}
merge-test 12 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3b4b 5 6 7 8b 9b
} {
  1 2 3b4b 5 6c 7c 8 9
} {
  1 2 3b4b 5 6c 7c 8b 9b
}

merge-test 20 {
  1 2 3 4 5 6 7 8 9
} {
  1 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 7 9
} {
  1 3 4 5 6 7 9
}
merge-test 21 {
  1 2 3 4 5 6 7 8 9
} {
  1 4 5 6 7 8 9
} {
  1 2 3 4 5 6 9
} {
  1 4 5 6 9
}
merge-test 22 {
  1 2 3 4 5 6 7 8 9
} {
  1 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 5 9
}
merge-test 23 {
  1 2 3 4 5 6 7 8 9
} {
  1 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 9
}
merge-test 24 {
  1 2 3 4 5 6 7 8 9
} {
  1 6 7 8 9
} {
  1 2 3 4 9
} {
  1 > 6 7 8 = 2 3 4 < 9
}
merge-test 25 {
  1 2 3 4 5 6 7 8 9
} {
  1 7 8 9
} {
  1 2 3 9
} {
  1 > 7 8 = 2 3 < 9
}

merge-test 30 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 7 9
} {
  1 3 4 5 6 7 8 9
} {
  1 3 4 5 6 7 9
}
merge-test 31 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 9
} {
  1 4 5 6 7 8 9
} {
  1 4 5 6 9
}
merge-test 32 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 5 6 7 8 9
} {
  1 5 9
}
merge-test 33 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 6 7 8 9
} {
  1 9
}
merge-test 34 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 9
} {
  1 6 7 8 9
} {
  1 > 2 3 4 = 6 7 8 < 9
}
merge-test 35 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 9
} {
  1 7 8 9
} {
  1 > 2 3 = 7 8 < 9
}

merge-test 40 {
  2 3 4 5 6 7 8
} {
  3 4 5 6 7 8
} {
  2 3 4 5 6 7
} {
  3 4 5 6 7
}
merge-test 41 {
  2 3 4 5 6 7 8
} {
  4 5 6 7 8
} {
  2 3 4 5 6
} {
  4 5 6
}
merge-test 42 {
  2 3 4 5 6 7 8
} {
  5 6 7 8
} {
  2 3 4 5
} {
  5
}
merge-test 43 {
  2 3 4 5 6 7 8
} {
  6 7 8
} {
  2 3 4 5
} {
  
}
merge-test 44 {
  2 3 4 5 6 7 8
} {
  6 7 8
} {
  2 3 4
} {
  > 6 7 8 = 2 3 4 <
}
merge-test 45 {
  2 3 4 5 6 7 8
} {
  7 8
} {
  2 3
} {
  > 7 8 = 2 3 <
}

merge-test 50 {
  2 3 4 5 6 7 8
} {
  2 3 4 5 6 7
} {
  3 4 5 6 7 8
} {
  3 4 5 6 7
}
merge-test 51 {
  2 3 4 5 6 7 8
} {
  2 3 4 5 6
} {
  4 5 6 7 8
} {
  4 5 6
}
merge-test 52 {
  2 3 4 5 6 7 8
} {
  2 3 4 5
} {
  5 6 7 8
} {
  5
}
merge-test 53 {
  2 3 4 5 6 7 8
} {
  2 3 4 5
} {
  6 7 8
} {
}
merge-test 54 {
  2 3 4 5 6 7 8
} {
  2 3 4
} {
  6 7 8
} {
  > 2 3 4 = 6 7 8 <
}
merge-test 55 {
  2 3 4 5 6 7 8
} {
  2 3
} {
  7 8
} {
  > 2 3 = 7 8 <
}

merge-test 60 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 7 9
} {
  1 2b 3 4 5 6 7 9
}
merge-test 61 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3b 4 5 6 7 8 9
} {
  1 2 3 4 5 6 9
} {
  1 2b 3b 4 5 6 9
}
merge-test 62 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3b 4b 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 2b 3b 4b 5 9
}
merge-test 63 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3b 4b 5b 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 2b 3b 4b 5b 9
}
merge-test 64 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3b 4b 5b 6 7 8 9
} {
  1 2 3 4 9
} {
  1 > 2b 3b 4b 5b 6 7 8 = 2 3 4 < 9
}
merge-test 65 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3b 4b 5b 6b 7 8 9
} {
  1 2 3 9
} {
  1 > 2b 3b 4b 5b 6b 7 8 = 2 3 < 9
}

merge-test 70 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 7 9
} {
  1 2b 3 4 5 6 7 8 9
} {
  1 2b 3 4 5 6 7 9
}
merge-test 71 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 6 9
} {
  1 2b 3b 4 5 6 7 8 9
} {
  1 2b 3b 4 5 6 9
}
merge-test 72 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 2b 3b 4b 5 6 7 8 9
} {
  1 2b 3b 4b 5 9
}
merge-test 73 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 9
} {
  1 2b 3b 4b 5b 6 7 8 9
} {
  1 2b 3b 4b 5b 9
}
merge-test 74 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 9
} {
  1 2b 3b 4b 5b 6 7 8 9
} {
  1 > 2 3 4 = 2b 3b 4b 5b 6 7 8 < 9
}
merge-test 75 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 9
} {
  1 2b 3b 4b 5b 6b 7 8 9
} {
  1 > 2 3 = 2b 3b 4b 5b 6b 7 8 < 9
}

merge-test 80 {
  2 3 4 5 6 7 8
} {
  2b 3 4 5 6 7 8
} {
  2 3 4 5 6 7
} {
  2b 3 4 5 6 7
}
merge-test 81 {
  2 3 4 5 6 7 8
} {
  2b 3b 4 5 6 7 8
} {
  2 3 4 5 6
} {
  2b 3b 4 5 6
}
merge-test 82 {
  2 3 4 5 6 7 8
} {
  2b 3b 4b 5 6 7 8
} {
  2 3 4 5
} {
  2b 3b 4b 5
}
merge-test 83 {
  2 3 4 5 6 7 8
} {
  2b 3b 4b 5b 6 7 8
} {
  2 3 4 5
} {
  2b 3b 4b 5b
}
merge-test 84 {
  2 3 4 5 6 7 8
} {
  2b 3b 4b 5b 6 7 8
} {
  2 3 4
} {
  > 2b 3b 4b 5b 6 7 8 = 2 3 4 <
}
merge-test 85 {
  2 3 4 5 6 7 8
} {
  2b 3b 4b 5b 6b 7 8
} {
  2 3
} {
  > 2b 3b 4b 5b 6b 7 8 = 2 3 <
}

merge-test 90 {
  2 3 4 5 6 7 8
} {
  2 3 4 5 6 7
} {
  2b 3 4 5 6 7 8
} {
  2b 3 4 5 6 7
}
merge-test 91 {
  2 3 4 5 6 7 8
} {
  2 3 4 5 6
} {
  2b 3b 4 5 6 7 8
} {
  2b 3b 4 5 6
}
merge-test 92 {
  2 3 4 5 6 7 8
} {
  2 3 4 5
} {
  2b 3b 4b 5 6 7 8
} {
  2b 3b 4b 5
}
merge-test 93 {
  2 3 4 5 6 7 8
} {
  2 3 4 5
} {
  2b 3b 4b 5b 6 7 8
} {
  2b 3b 4b 5b
}
merge-test 94 {
  2 3 4 5 6 7 8
} {
  2 3 4
} {
  2b 3b 4b 5b 6 7 8
} {
  > 2 3 4 = 2b 3b 4b 5b 6 7 8 <
}
merge-test 95 {
  2 3 4 5 6 7 8
} {
  2 3
} {
  2b 3b 4b 5b 6b 7 8
} {
  > 2 3 = 2b 3b 4b 5b 6b 7 8 <
}

merge-test 100 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3 4 5 7 8 9 a b c d e
} {
  1 2b 3 4 5 7 8 9 a b c d e
} {
  1 2b 3 4 5 7 8 9 a b c d e
}
merge-test 101 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3 4 5 7 8 9 a b c d e
} {
  1 2b 3 4 5 7 8 9
} {
  1 2b 3 4 5 7 8 9 a b c d e
}
merge-test 102 {
  1 2 3 4 5 6 7 8 9
} {
  1 2b 3 4 5 7 8 9
} {
  1 2b 3 4 5 7 8 9 a b c d e
} {
  1 2b 3 4 5 7 8 9 a b c d e
}
merge-test 103 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 7 8 9b
} {
  1 2 3 4 5 7 8 9b a b c d e
} {
  1 2 3 4 5 7 8 > 9b = 9b a b c d e <
}
merge-test 104 {
  1 2 3 4 5 6 7 8 9
} {
  1 2 3 4 5 7 8 9b a b c d e
} {
  1 2 3 4 5 7 8 9b
} {
  1 2 3 4 5 7 8 > 9b a b c d e = 9b <
}