blob: 186b01bbe1b8f046adde03161cb6fb17b33e4330 [file] [log] [blame]
// Copyright (c) 2019, the R8 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.
package com.android.tools.r8.desugar.graph;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.DesugarGraphConsumer;
import com.android.tools.r8.origin.Origin;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class DesugarGraphTestConsumer implements DesugarGraphConsumer {
private boolean finished = false;
private Map<Origin, Set<Origin>> edges = new HashMap<>();
public boolean contains(Origin dependency, Origin dependent) {
assertTrue(finished);
return edges.getOrDefault(dependency, Collections.emptySet()).contains(dependent);
}
public int totalEdgeCount() {
assertTrue(finished);
int count = 0;
for (Set<Origin> dependents : edges.values()) {
count += dependents.size();
}
return count;
}
@Override
public synchronized void accept(Origin dependent, Origin dependency) {
assertFalse(finished);
edges.computeIfAbsent(dependency, s -> new HashSet<>()).add(dependent);
}
@Override
public void finished() {
assertFalse(finished);
finished = true;
}
}