| /* |
| * Copyright (c) 2011 Google Inc. |
| * |
| * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse |
| * Public License v1.0 which accompanies this distribution, and is available at |
| * |
| * http://www.eclipse.org/legal/epl-v10.html |
| */ |
| package com.google.eclipse.protobuf.scoping; |
| |
| import java.util.*; |
| |
| import org.hamcrest.*; |
| |
| /** |
| * @author alruiz@google.com (Alex Ruiz) |
| */ |
| class ContainAllNames extends BaseMatcher<IEObjectDescriptions> { |
| |
| private final String[] expectedNames; |
| |
| static ContainAllNames containAll(String... names) { |
| return new ContainAllNames(names); |
| } |
| |
| private ContainAllNames(String... names) { |
| expectedNames = names; |
| } |
| |
| @Override public boolean matches(Object arg) { |
| if (!(arg instanceof IEObjectDescriptions)) return false; |
| IEObjectDescriptions descriptions = (IEObjectDescriptions) arg; |
| List<String> names = new ArrayList<String>(descriptions.names()); |
| if (names.size() != expectedNames.length) return false; |
| for (String name : expectedNames) { |
| boolean removed = names.remove(name); |
| if (!removed) return false; |
| } |
| return names.isEmpty(); |
| } |
| |
| @Override public void describeTo(Description description) { |
| description.appendValue(Arrays.toString(expectedNames)); |
| } |
| } |