1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 }