View Javadoc

    1   /**
    2    * Copyright (c) 2008-2011, http://www.snakeyaml.org
    3    *
    4    * Licensed under the Apache License, Version 2.0 (the "License");
    5    * you may not use this file except in compliance with the License.
    6    * You may obtain a copy of the License at
    7    *
    8    *     http://www.apache.org/licenses/LICENSE-2.0
    9    *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16
    17  package org.yaml.snakeyaml.constructor;
    18
    19  import java.io.IOException;
    20  import java.util.List;
    21
    22  import junit.framework.TestCase;
    23
    24  import org.yaml.snakeyaml.DumperOptions;
    25  import org.yaml.snakeyaml.DumperOptions.FlowStyle;
    26  import org.yaml.snakeyaml.TypeDescription;
    27  import org.yaml.snakeyaml.Util;
    28  import org.yaml.snakeyaml.Yaml;
    29
    30  public class ArrayTagsTest extends TestCase {
    31
    32      public void testDefaultRepresenter() throws IOException {
    33          CarWithArray car = new CarWithArray();
    34          car.setPlate("12-XP-F4");
    35          Wheel[] wheels = new Wheel[5];
    36          for (int i = 1; i < 6; i++) {
    37              Wheel wheel = new Wheel();
    38              wheel.setId(i);
    39              wheels[i - 1] = wheel;
    40          }
    41          car.setWheels(wheels);
    42          assertEquals(Util.getLocalResource("constructor/cararray-with-tags-flow-auto.yaml"),
    43                  new Yaml().dump(car));
    44      }
    45
    46      public void testFlowBlock() throws IOException {
    47          CarWithArray car = new CarWithArray();
    48          car.setPlate("12-XP-F4");
    49          Wheel[] wheels = new Wheel[5];
    50          for (int i = 1; i < 6; i++) {
    51              Wheel wheel = new Wheel();
    52              wheel.setId(i);
    53              wheels[i - 1] = wheel;
    54          }
    55          car.setWheels(wheels);
    56          DumperOptions options = new DumperOptions();
    57          options.setDefaultFlowStyle(FlowStyle.BLOCK);
    58          Yaml yaml = new Yaml(options);
    59          assertEquals(Util.getLocalResource("constructor/cararray-with-tags.yaml"), yaml.dump(car));
    60      }
    61
    62      public void testLoadClassTag() throws IOException {
    63          Constructor constructor = new Constructor();
    64          constructor.addTypeDescription(new TypeDescription(Car.class, "!car"));
    65          Yaml yaml = new Yaml(constructor);
    66          Car car = (Car) yaml.load(Util.getLocalResource("constructor/car-without-tags.yaml"));
    67          assertEquals("12-XP-F4", car.getPlate());
    68          List<Wheel> wheels = car.getWheels();
    69          assertNotNull(wheels);
    70          assertEquals(5, wheels.size());
    71      }
    72
    73      public void testNullDescription() throws IOException {
    74          Constructor constructor = new Constructor();
    75          try {
    76              constructor.addTypeDescription(null);
    77              fail("Description is required.");
    78          } catch (Exception e) {
    79              assertEquals("TypeDescription is required.", e.getMessage());
    80          }
    81      }
    82
    83      public void testLoadClassNoRoot() throws IOException {
    84          Constructor constructor = new Constructor(new TypeDescription(CarWithArray.class));
    85          Yaml yaml = new Yaml(constructor);
    86          CarWithArray car = (CarWithArray) yaml.load(Util
    87                  .getLocalResource("constructor/car-no-root-class.yaml"));
    88          assertEquals("12-XP-F4", car.getPlate());
    89          Wheel[] wheels = car.getWheels();
    90          assertNotNull(wheels);
    91          assertEquals(5, wheels.length);
    92      }
    93
    94      public static class CarWithArray {
    95          private String plate;
    96          private Wheel[] wheels;
    97
    98          public String getPlate() {
    99              return plate;
    100         }
    101
    102         public void setPlate(String plate) {
    103             this.plate = plate;
    104         }
    105
    106         public Wheel[] getWheels() {
    107             return wheels;
    108         }
    109
    110         public void setWheels(Wheel[] wheels) {
    111             this.wheels = wheels;
    112         }
    113     }
    114 }