tikhomirov@61: /* tikhomirov@61: * Copyright (c) 2011 Artem Tikhomirov tikhomirov@61: */ tikhomirov@61: package com.tmate.hgkit; tikhomirov@61: tikhomirov@61: import java.io.File; tikhomirov@61: import java.util.Collection; tikhomirov@61: import java.util.LinkedList; tikhomirov@61: import java.util.List; tikhomirov@61: tikhomirov@61: import com.tmate.hgkit.fs.FileWalker; tikhomirov@61: import com.tmate.hgkit.fs.RepositoryLookup; tikhomirov@61: import com.tmate.hgkit.ll.HgRepository; tikhomirov@61: import com.tmate.hgkit.ll.StatusCollector; tikhomirov@61: import com.tmate.hgkit.ll.WorkingCopyStatusCollector; tikhomirov@61: tikhomirov@61: /** tikhomirov@61: * tikhomirov@61: * @author artem tikhomirov@61: */ tikhomirov@61: public class TestStatus { tikhomirov@61: tikhomirov@61: public static void main(String[] args) throws Exception { tikhomirov@62: HgRepository repo = new RepositoryLookup().detectFromWorkingDir(); tikhomirov@62: final WorkingCopyStatusCollector wcc = new WorkingCopyStatusCollector(repo, new FileWalker(new File(System.getProperty("user.dir")))); tikhomirov@61: final StatusOutputParser statusParser = new StatusOutputParser(); tikhomirov@61: ExecHelper eh = new ExecHelper(statusParser, null); tikhomirov@62: // tikhomirov@61: eh.run("hg", "status", "-A"); tikhomirov@61: StatusCollector.Record r = wcc.status(HgRepository.TIP); tikhomirov@62: report("hg status -A", r, statusParser); tikhomirov@62: // tikhomirov@62: statusParser.reset(); tikhomirov@62: int revision = 3; tikhomirov@62: eh.run("hg", "status", "-A", "--rev", String.valueOf(revision)); tikhomirov@62: r = wcc.status(revision); tikhomirov@62: report("status -A --rev " + revision, r, statusParser); tikhomirov@62: // tikhomirov@62: statusParser.reset(); tikhomirov@62: eh.run("hg", "status", "-A", "--change", String.valueOf(revision)); tikhomirov@62: r = new StatusCollector.Record(); tikhomirov@62: new StatusCollector(repo).change(revision, r); tikhomirov@62: report("status -A --change " + revision, r, statusParser); tikhomirov@62: } tikhomirov@62: tikhomirov@62: private static void report(String what, StatusCollector.Record r, StatusOutputParser statusParser) { tikhomirov@62: System.out.println(">>>" + what); tikhomirov@61: reportNotEqual("MODIFIED", r.getModified(), statusParser.getModified()); tikhomirov@61: reportNotEqual("ADDED", r.getAdded(), statusParser.getAdded()); tikhomirov@61: reportNotEqual("REMOVED", r.getRemoved(), statusParser.getRemoved()); tikhomirov@61: reportNotEqual("CLEAN", r.getClean(), statusParser.getClean()); tikhomirov@61: reportNotEqual("IGNORED", r.getIgnored(), statusParser.getIgnored()); tikhomirov@61: reportNotEqual("MISSING", r.getMissing(), statusParser.getMissing()); tikhomirov@61: reportNotEqual("UNKNOWN", r.getUnknown(), statusParser.getUnknown()); tikhomirov@61: // TODO compare equals tikhomirov@62: System.out.println("<<<\n"); tikhomirov@61: } tikhomirov@61: tikhomirov@61: private static void reportNotEqual(String what, Collection l1, Collection l2) { tikhomirov@61: List diff = difference(l1, l2); tikhomirov@61: System.out.print(what); tikhomirov@61: if (!diff.isEmpty()) { tikhomirov@61: System.out.print(" are NOT the same: "); tikhomirov@61: for (T t : diff) { tikhomirov@61: System.out.print(t); tikhomirov@61: System.out.print(", "); tikhomirov@61: } tikhomirov@61: System.out.println(); tikhomirov@61: } else { tikhomirov@61: System.out.println(" are the same"); tikhomirov@61: } tikhomirov@61: } tikhomirov@61: tikhomirov@61: private static List difference(Collection l1, Collection l2) { tikhomirov@61: LinkedList result = new LinkedList(l2); tikhomirov@61: for (T t : l1) { tikhomirov@61: if (l2.contains(t)) { tikhomirov@61: result.remove(t); tikhomirov@61: } else { tikhomirov@61: result.add(t); tikhomirov@61: } tikhomirov@61: } tikhomirov@61: return result; tikhomirov@61: } tikhomirov@61: }