content: // 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 com.cloud.hypervisor.ovm3.objects;
  
  import static org.junit.Assert.assertEquals;
  import static org.junit.Assert.assertNotNull;
  
  import java.util.List;
  
  import org.apache.commons.lang3.StringEscapeUtils;
  
  public class XmlTestResultTest {
      private static final String NULL = "<nil/>";
  
      private String brack(String type, String s) {
          return "<" + type + ">" + s + "</" + type + ">";
      }
  
      public String escapeOrNot(String s) {
          if (s.startsWith("<")) {
              return StringEscapeUtils.escapeXml10(s);
          }
          return s;
      }
  
      public String errorResponseWrap(String message) {
          return errorResponseWrap(1, message);
      }
  
      /*
       * example exceptions.OSError:[Errno.17].File.exists:
       * '/OVS/Repositories/f12842ebf5ed3fe78da1eb0e17f5ede8/VilualDisks/test.raw'
       */
      public String errorResponseWrap(Integer faultCode, String message) {
          String rs = "<?xml version='1.0'?>" + "<methodResponse>" + "<fault>"
                  + "<value><struct>" + "<member>" + "<name>faultCode</name>"
                  + "<value><int>" + faultCode + "</int></value>" + "</member>"
                  + "<member>" + "<name>faultString</name>" + "<value><string>"
                  + message + "</string></value>" + "</member>"
                  + "</struct></value>" + "</fault>" + "</methodResponse>";
          return rs;
      }
  
      public String methodResponseWrap(String towrap) {
          return "<?xml version='1.0'?>\n" + "<methodResponse>\n" + "<params>\n"
                  + towrap + "</params>\n" + "</methodResponse>";
      }
  
      public String simpleResponseWrapWrapper(String s) {
          return methodResponseWrap("<param>\n" + "<value>" + s + "</value>\n"
                  + "</param>\n");
      }
  
      /* brack the entire wrap ? :) */
      public String simpleResponseWrap(String type, String s) {
          if (type.contentEquals(NULL)) {
              s = NULL;
          } else {
              s = brack(type, s);
          }
          return simpleResponseWrapWrapper(s);
      }
  
      public String simpleResponseWrap(String s) {
          return simpleResponseWrapWrapper(s);
      }
  
      public String getBoolean(boolean bool) {
          String b = "1";
          if (!bool) {
              b = "0";
          }
          return simpleResponseWrap("boolean", b);
      }
  
      public String getString(String s) {
          return simpleResponseWrap("string", s);
      }
  
      public String getNil() {
          return simpleResponseWrap(NULL, NULL);
      }
  
      public void basicBooleanTest(boolean result) {
          basicBooleanTest(result, true);
      }
  
      public void basicBooleanTest(boolean result, boolean desired) {
          assertNotNull(result);
          assertEquals(desired, result);
      }
  
      public void basicStringTest(String result, String desired) {
          assertNotNull(result);
          assertEquals(desired, result);
      }
  
      public void basicIntTest(Integer result, Integer desired) {
          assertNotNull(result);
          assertEquals(desired, result);
      }
  
      public void basicLongTest(Long result, Long desired) {
          assertEquals(desired, result);
      }
  
      public Boolean basicListHasString(List<String> list, String x) {
          for (String y : list) {
              if (y.matches(x)) {
                  return true;
              }
          }
          return false;
      }
  
      public void basicDoubleTest(Double result, Double desired) {
          assertEquals(desired, result);
      }
  }
  