Package org.apache.sling.commons.json.util

Source Code of org.apache.sling.commons.json.util.DespacedRendering

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.sling.commons.json.util;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;

/** Test the String formatting functionality of JSONObject */
public class DespacedRendering {
    private final String despaced;
   
    /** Simplify whitespace in str and replace quotes
     *  to make it easier to compare the output
     *  @param spaceReplacement replaces spaces after the first one
     *  */
    public DespacedRendering(String str, String spaceReplacement) throws JSONException {
       
        boolean previousWasSpace = false;
       
        // Verify that str parses
        new JSONObject(str);
       
        // And convert whitespace and quotes to
        // make comparisons easier
        final StringBuilder sb = new StringBuilder();
        for(int i=0; i < str.length(); i++) {
            final Character c = str.charAt(i);
            final boolean isWhitespace = Character.isWhitespace(c);
            if(c == '\n') {
                sb.append("-nl-");
            } else if(isWhitespace) {
                if(previousWasSpace && spaceReplacement != null) {
                    sb.append(spaceReplacement);
                }
            } else if(c == '\"') {
                sb.append("_");
            } else if(c == '\"') {
                sb.append("-dq-");
            } else {
                sb.append(c);
            }
            previousWasSpace = isWhitespace;
        }
        despaced = sb.toString();
    }
   
    public DespacedRendering(String str) throws JSONException {
        this(str, null);
    }
   

    public DespacedRendering expect(String ...expected) {
        for(String e : expected) {
            assertTrue("Expecting " + e + " to be contained in " + despaced, despaced.contains(e));
        }
        return this;
    }
   
    public DespacedRendering assertExactMatch(String expected) {
        assertEquals("Expecting an exact match with " + expected + " at " + despaced, expected, despaced);
        return this;
    }
   
    public DespacedRendering expectLength(int n) {
        assertEquals("Expecting a String length of " + n + " for " + despaced, n, despaced.length());
        return this;
    }
};
TOP

Related Classes of org.apache.sling.commons.json.util.DespacedRendering

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.