summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/helpers/CompareConfigTestHelper.java
blob: f7709b4aebfb64b3c1b7c185a39e5d38223fd161 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package helpers;

import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import com.yahoo.io.IOUtils;

import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;

import static org.junit.Assert.assertEquals;

/**
 * @author Vegard Sjonfjell
 */
public class CompareConfigTestHelper {

    public static void assertSerializedConfigFileEquals(String filename, String actual) throws IOException {
        assertSerializedConfigEquals(IOUtils.readFile(new File(filename)), actual);
    }

    // Written this way to compare order independently but output error with order preserved
    // Note that this means that if a test fails you'll also see spurious differences in the comparison
    // from lines which are present in both but at different locations.
    public static void assertSerializedConfigEquals(String expected, String actual) {
        if ( ! sortLines(expected.trim()).equals(sortLines(actual.trim())))
            assertEquals(expected, actual);
    }

    private static String sortLines(String fileData) {
        final List<String> lines = Lists.newArrayList(Splitter.on('\n').split(fileData));
        Collections.sort(lines);
        return Joiner.on('\n').join(lines);
    }

}