// 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. // @dart=2.9 import 'dart:io' show File; import '../test/binary_md_dill_reader.dart' show DillComparer; import '../test/utils/io_utils.dart' show computeRepoDir; main(List 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 a = fileA.readAsBytesSync(); List 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!"); } }