View Javadoc
1   /*
2    * Copyright (C) 2009-2010, Google Inc.
3    * Copyright (C) 2009, Johannes E. Schindelin <johannes.schindelin@gmx.de>
4    * and other copyright owners as documented in the project's IP log.
5    *
6    * This program and the accompanying materials are made available
7    * under the terms of the Eclipse Distribution License v1.0 which
8    * accompanies this distribution, is reproduced below, and is
9    * available at http://www.eclipse.org/org/documents/edl-v10.php
10   *
11   * All rights reserved.
12   *
13   * Redistribution and use in source and binary forms, with or
14   * without modification, are permitted provided that the following
15   * conditions are met:
16   *
17   * - Redistributions of source code must retain the above copyright
18   *   notice, this list of conditions and the following disclaimer.
19   *
20   * - Redistributions in binary form must reproduce the above
21   *   copyright notice, this list of conditions and the following
22   *   disclaimer in the documentation and/or other materials provided
23   *   with the distribution.
24   *
25   * - Neither the name of the Eclipse Foundation, Inc. nor the
26   *   names of its contributors may be used to endorse or promote
27   *   products derived from this software without specific prior
28   *   written permission.
29   *
30   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
31   * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
32   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
33   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
35   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
37   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
39   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
41   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
42   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43   */
44  
45  package org.eclipse.jgit.diff;
46  
47  import static org.junit.Assert.assertEquals;
48  import static org.junit.Assert.assertFalse;
49  import static org.junit.Assert.assertTrue;
50  
51  import org.eclipse.jgit.lib.Constants;
52  import org.junit.Test;
53  
54  public class RawTextIgnoreTrailingWhitespaceTest {
55  	private final RawTextComparator cmp = RawTextComparator.WS_IGNORE_TRAILING;
56  
57  	@Test
58  	public void testEqualsWithoutWhitespace() {
59  		final RawText a = new RawText(Constants
60  				.encodeASCII("foo-a\nfoo-b\nfoo\n"));
61  		final RawText b = new RawText(Constants
62  				.encodeASCII("foo-b\nfoo-c\nf\n"));
63  
64  		assertEquals(3, a.size());
65  		assertEquals(3, b.size());
66  
67  		// foo-a != foo-b
68  		assertFalse(cmp.equals(a, 0, b, 0));
69  		assertFalse(cmp.equals(b, 0, a, 0));
70  
71  		// foo-b == foo-b
72  		assertTrue(cmp.equals(a, 1, b, 0));
73  		assertTrue(cmp.equals(b, 0, a, 1));
74  
75  		// foo != f
76  		assertFalse(cmp.equals(a, 2, b, 2));
77  		assertFalse(cmp.equals(b, 2, a, 2));
78  	}
79  
80  	@Test
81  	public void testEqualsWithWhitespace() {
82  		final RawText a = new RawText(Constants
83  				.encodeASCII("foo-a\n         \n a b c\na      \n    b\n"));
84  		final RawText b = new RawText(Constants
85  				.encodeASCII("foo-a        b\n\nab  c\na\nb\n"));
86  
87  		// "foo-a" != "foo-a        b"
88  		assertFalse(cmp.equals(a, 0, b, 0));
89  		assertFalse(cmp.equals(b, 0, a, 0));
90  
91  		// "         " == ""
92  		assertTrue(cmp.equals(a, 1, b, 1));
93  		assertTrue(cmp.equals(b, 1, a, 1));
94  
95  		// " a b c" != "ab  c"
96  		assertFalse(cmp.equals(a, 2, b, 2));
97  		assertFalse(cmp.equals(b, 2, a, 2));
98  
99  		// "a      " == "a"
100 		assertTrue(cmp.equals(a, 3, b, 3));
101 		assertTrue(cmp.equals(b, 3, a, 3));
102 
103 		// "    b" != "b"
104 		assertFalse(cmp.equals(a, 4, b, 4));
105 		assertFalse(cmp.equals(b, 4, a, 4));
106 	}
107 }