| // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
 | // for details. All rights reserved. Use of this source code is governed by a | 
 | // BSD-style license that can be found in the LICENSE file. | 
 |  | 
 | import 'dart:io' show File; | 
 |  | 
 | import '../test/binary_md_dill_reader.dart' show DillComparer; | 
 | import '../test/utils/io_utils.dart' show computeRepoDir; | 
 |  | 
 | void main(List<String> args) { | 
 |   if (args.length != 2) { | 
 |     throw "Expects two arguments: The two files to compare"; | 
 |   } | 
 |   File fileA = new File(args[0]); | 
 |   File fileB = new File(args[1]); | 
 |  | 
 |   List<int> a = fileA.readAsBytesSync(); | 
 |   List<int> b = fileB.readAsBytesSync(); | 
 |  | 
 |   bool shouldCompare = false; | 
 |   if (a.length != b.length) { | 
 |     print("Input lengths are different."); | 
 |     shouldCompare = true; | 
 |   } else { | 
 |     for (int i = 0; i < a.length; ++i) { | 
 |       if (a[i] != b[i]) { | 
 |         print("Data differs at byte ${i + 1}."); | 
 |         shouldCompare = true; | 
 |         break; | 
 |       } | 
 |     } | 
 |   } | 
 |  | 
 |   if (shouldCompare) { | 
 |     StringBuffer message = new StringBuffer(); | 
 |     final String repoDir = computeRepoDir(); | 
 |     File binaryMd = new File("$repoDir/pkg/kernel/binary.md"); | 
 |     String binaryMdContent = binaryMd.readAsStringSync(); | 
 |  | 
 |     DillComparer dillComparer = new DillComparer(); | 
 |     if (dillComparer.compare(a, b, binaryMdContent, message)) { | 
 |       message.writeln( | 
 |           "Somehow the two different byte-lists compared to the same."); | 
 |     } | 
 |  | 
 |     print(message); | 
 |   } else { | 
 |     print("Inputs byte-equal!"); | 
 |   } | 
 | } |