001/*
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 */
006package org.fcrepo.client;
007
008import static org.junit.Assert.assertEquals;
009import static org.junit.Assert.assertTrue;
010
011import java.util.HashMap;
012import java.util.Map;
013
014import org.junit.Test;
015
016/**
017 * @author bbpennel
018 */
019public class HeaderHelpersTest {
020
021    @Test
022    public void testFormatQualityValues() {
023        final Map<String, Double> qualityMap = new HashMap<>();
024        qualityMap.put("md5", 1.0);
025
026        assertEquals("md5;q=1.0", HeaderHelpers.formatQualityValues(qualityMap));
027    }
028
029    @Test
030    public void testFormatQualityValuesNoQValue() {
031        final Map<String, Double> qualityMap = new HashMap<>();
032        qualityMap.put("md5", null);
033
034        assertEquals("md5", HeaderHelpers.formatQualityValues(qualityMap));
035    }
036
037    @Test
038    public void testFormatQualityValuesMultipleWithDifferentQ() {
039        final Map<String, String> qualityMap = new HashMap<>();
040        qualityMap.put("md5", "1.0");
041        qualityMap.put("sha-512", "0.4");
042
043        final String result = HeaderHelpers.formatQualityValues(qualityMap);
044        assertTrue(result.contains("md5;q=1.0"));
045        assertTrue(result.contains("sha-512;q=0.4"));
046    }
047
048    @Test
049    public void testFormatQualityValuesMultipleSameQ() {
050        final Map<String, Double> qualityMap = new HashMap<>();
051        qualityMap.put("md5", 1.0);
052        qualityMap.put("sha", 1.0);
053        qualityMap.put("sha-512", 0.4);
054
055        final String result = HeaderHelpers.formatQualityValues(qualityMap);
056        // can't guarantee order
057        assertTrue(result.contains("md5,sha;q=1.0") || result.contains("sha,md5;q=1.0"));
058        assertTrue(result.contains("sha-512;q=0.4"));
059    }
060
061    @Test
062    public void testFormatQualityValuesMultipleQ() {
063        final Map<String, Double> qualityMap = new HashMap<>();
064        qualityMap.put("md5", null);
065        qualityMap.put("sha", null);
066
067        final String result = HeaderHelpers.formatQualityValues(qualityMap);
068        // can't guarantee order
069        assertTrue(result.contains("md5,sha") || result.contains("sha,md5"));
070    }
071}