1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * Copyright (C) 2018, Google LLC. and others
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0 which is available at
- * https://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- package org.eclipse.jgit.transport;
-
- import java.util.Collection;
- import java.util.Set;
- import java.util.stream.Collectors;
-
- import org.eclipse.jgit.lib.ObjectId;
- import org.eclipse.jgit.lib.Sets;
- import org.hamcrest.Description;
- import org.hamcrest.Matcher;
- import org.hamcrest.TypeSafeMatcher;
-
- /**
- * Multiple tests check that a collection of ObjectIds contain certain SHA1
- * (written as strings). This matcher hides the ObjectId to string conversion to
- * make the assertion more readable:
- *
- * assertThat(req.getWantsIds(), hasOnlyObjectIds("123123", "234234"));
- */
- class ObjectIdMatcher extends TypeSafeMatcher<Collection<ObjectId>> {
-
- private final Set<ObjectId> expectedOids;
-
- private ObjectIdMatcher(Set<String> oids) {
- this.expectedOids = oids.stream().map(ObjectId::fromString)
- .collect(Collectors.toSet());
- }
-
- @Override
- public void describeTo(Description desc) {
- desc.appendText("Object ids:");
- desc.appendValueList("<", ",", ">", expectedOids);
- }
-
- @Override
- protected boolean matchesSafely(Collection<ObjectId> resultOids) {
- return resultOids.containsAll(expectedOids)
- && expectedOids.containsAll(resultOids);
- }
-
- /**
- * Assert that all and only the received {@link ObjectId object ids} are in
- * the expected set.
- * <p>
- * ObjectIds are compared by SHA1.
- *
- * @param oids
- * Object ids to examine.
- * @return true if examined and specified sets contains exactly the same
- * elements.
- */
- static Matcher<Collection<ObjectId>> hasOnlyObjectIds(
- String... oids) {
- return new ObjectIdMatcher(Sets.of(oids));
- }
- }
|