/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.buck.util; import org.hamcrest.Matcher; import org.hamcrest.core.IsEqual; public class MoreStringsForTests { /** Utility class: do not instantiate. */ private MoreStringsForTests() {} private static class IsEqualIgnoringPlatformNewlines extends IsEqual<String> { public IsEqualIgnoringPlatformNewlines(String expectedText) { super(normalizeNewlines(expectedText)); } @Override public boolean matches(Object o) { if (o instanceof String) { String candidateText = normalizeNewlines((String) o); return super.matches(candidateText); } return false; } } /** A cross-platform matcher for a string with newlines. */ public static Matcher<String> equalToIgnoringPlatformNewlines(String expectedText) { return new IsEqualIgnoringPlatformNewlines(expectedText); } public static String normalizeNewlines(String s) { // Windows uses "\r\n", some mac apps use "\r", so standardize on "\n". return s.replace("\r\n", "\n").replace('\r', '\n'); } }