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.math.BigDecimal;
    21
    22  import junit.framework.TestCase;
    23
    24  import org.yaml.snakeyaml.Yaml;
    25
    26  public class BigDecimalBeanConstructorTest extends TestCase {
    27
    28      public void testRepresentor() throws IOException {
    29          BigDecimalJavaBean bean = new BigDecimalJavaBean();
    30          bean.setAmount(1.5f);
    31          bean.setNumber(new BigDecimal("3.1416"));
    32          Yaml yaml = new Yaml();
    33          String output = yaml.dump(bean);
    34          String className = this.getClass().getPackage().getName();
    35          assertEquals("!!" + className + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}\n",
    36                  output);
    37      }
    38
    39      public void testConstructor() throws IOException {
    40          String className = "!!" + this.getClass().getPackage().getName()
    41                  + ".BigDecimalJavaBean {amount: 1.5, number: 3.1416}";
    42          Yaml yaml = new Yaml();
    43          BigDecimalJavaBean bean = (BigDecimalJavaBean) yaml.load(className);
    44          assertNotNull(bean);
    45          assertTrue(1.5 - bean.getAmount() < 0.0000001);
    46          assertTrue((new BigDecimal("3.1416")).add(bean.getNumber().negate()).doubleValue() < 0.0000001);
    47      }
    48
    49      public void testConstructorAtomic() throws IOException {
    50          String className = "!!" + this.getClass().getPackage().getName()
    51                  + ".AtomicJavaBean {amount: 1.5, atomic: 0}";
    52          Yaml yaml = new Yaml();
    53          try {
    54              yaml.load(className);
    55              fail("AtomicLong is not supported.");
    56          } catch (Exception e) {
    57              assertEquals(
    58                      "Cannot create property=atomic for JavaBean=AtomicJavaBean; Unsupported class: class java.util.concurrent.atomic.AtomicLong",
    59                      e.getCause().getMessage());
    60          }
    61      }
    62  }