summaryrefslogtreecommitdiffstats
path: root/dexcomparator/testing/com/android/jack/dexcomparator/test/BinaryCodeComparisonTest.java
blob: 7c8c40f1b3d4f93ab5406b7488654ac46298c8de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.jack.dexcomparator.test;

import com.android.jack.comparator.DexComparator;
import com.android.jack.comparator.DifferenceFoundException;

import org.junit.Assert;
import org.junit.Test;

import java.io.File;
import java.io.IOException;

import javax.annotation.Nonnull;


public class BinaryCodeComparisonTest {

  @Nonnull
  private static final File testSource1 = new File("testsource1");
  @Nonnull
  private static final File testSource2 = new File("testsource2");

  @Test
  public void testDifferentBinaryCodeComparison() throws IOException {
    String sourcePath = "com/android/jack/dexcomparator/test/A.java";
    File a1 = new File(testSource1, sourcePath);
    File a2 = new File(testSource2, sourcePath);
    File dex1 = File.createTempFile("dex1", ".dex");
    dex1.deleteOnExit();
    TestTools.compileToDexWithJack(a1, dex1);
    File dex2 = File.createTempFile("dex2", ".dex");
    dex2.deleteOnExit();
    TestTools.compileToDexWithJack(a2, dex2);
    try {
      new DexComparator(false /* compareDebugInfo */, true /* strict */,
          false /* compareDebugInfoBinarily */, true /* compareCodeBinarily */).compare(dex1, dex2);
      Assert.fail();
    } catch (DifferenceFoundException e) {
    }
    try {
      new DexComparator(false /* compareDebugInfo */, true /* strict */,
          false /* compareDebugInfoBinarily */, true /* compareCodeBinarily */).compare(dex2, dex1);
      Assert.fail();
    } catch (DifferenceFoundException e) {
    }
  }

  @Test
  public void testIdenticalBinaryCodeComparison() throws IOException {
    String sourcePath = "com/android/jack/dexcomparator/test/A.java";
    File a1 = new File(testSource1, sourcePath);
    File dex1 = File.createTempFile("dex1", ".dex");
    dex1.deleteOnExit();
    TestTools.compileToDexWithJack(a1, dex1);
    try {
      new DexComparator(false /* compareDebugInfo */, true /* strict */,
          false /* compareDebugInfoBinarily */, true /* compareCodeBinarily */).compare(dex1, dex1);
    } catch (DifferenceFoundException e) {
      Assert.fail(e.getMessage());
    }
  }
}