001 /*
002 * @(#)TestKeyword.java $Revision: 1.1 $ $Date: 2000/02/09 12:14:54 $
003 *
004 * Copyright (C) 2000 European Southern Observatory
005 * License: GNU General Public License version 2 or later
006 */
007 package org.eso.fits;
008
009 import java.lang.*;
010 import java.util.*;
011 import java.io.*;
012
013 /** TestKeyword class performs regression test on the FitsKeyword class.
014 *
015 * @version $Id: TestKeyword.java,v 1.1 2000/02/09 12:14:54 pgrosbol Exp $
016 * @author P.Grosbol, DMD/ESO, <pgrosbol@eso.org>
017 */
018 public class TestKeyword{
019 public static void main(String[] argv) {
020 FitsKeyword kw;
021
022 String[] cards =
023 { "ABOOLEAN= F / Comment",
024 "REALKW = 1201.21e-2 / Just something",
025 "INTEGER = 3321234 / An integer",
026 "INTEGER1= 12",
027 "STRING1 = 'Any thing' / Simple string",
028 "STRING2 = 'It''s nice' / One with a quote",
029 "STRING3 = 'I''ll know if it''s nice' / One with several quotes",
030 "STRING4 = 'O' / Short string",
031 "DATE-OBS= '01/11/89' / A date",
032 "DATE = '2002-11-04' / Another date",
033 "DATE1 = '1782-09-21T11:32:47' / Yet another date",
034 "DATE123 = '01/11/89' / An old format date",
035 "ACOMMENT CARD with some words",
036 "HIERARCH ESO DET CHIP ON = T / HIERARCH boolean",
037 "HIERARCH ESO DET CHIP ID = 'CCD-223''en' / HIERARCH string",
038 "HIERARCH ANY INT NO = 732 / Test HIERARCH integer",
039 "HIERARCH ANY TEMP12 = 123.90",
040 "HIERARCH ANY time DATE = '2001-05-22' / Check HIERARCH date",
041 "\000\nTRY THIS KEYWORD",
042 "AND_JUST_A_LONG_COMMENT",
043 "END and some terxt",
044 " = 'this is actually a comment'",
045 "HIERARCH ESO DET CHIP ID but no equal sign"
046 };
047
048 System.out.println("-- Test reading keyword cards --");
049
050 for (int n=0; n<cards.length; n++) {
051 testString(cards[n].getBytes());
052 }
053 System.out.println("-- Test construntors -----------");
054
055 kw = new FitsKeyword("Aname", "test a string", "This is a string");
056 System.out.println(kw);
057
058 kw = new FitsKeyword("AndALONGNAME", 98, "This is an integer");
059 System.out.println(kw);
060
061 kw = new FitsKeyword("Aname", 123.231, "This is a double");
062 System.out.println(kw);
063
064 kw = new FitsKeyword("Aname", 123346347348231097120470917.501927,
065 "This is a double");
066 System.out.println(kw);
067
068 kw = new FitsKeyword("ANd.AN.Hierarch.keyword",
069 "test a string", "This is a string");
070 System.out.println(kw);
071
072 kw = new FitsKeyword("DATE-OBS", new Date(), "This is a date");
073 System.out.println(kw);
074
075 kw = new FitsKeyword("eso.ins.date", new Date(),
076 "This is a date with a long comment");
077 System.out.println(kw);
078
079 kw = new FitsKeyword("TEST", true, "This is a boolean");
080 System.out.println(kw);
081
082 kw = new FitsKeyword("TEST.and.one.more", false, "This is a boolean");
083 System.out.println(kw);
084
085 kw = new FitsKeyword("Aname", "This is a comment card");
086 System.out.println(kw);
087
088 kw = new FitsKeyword("Comment", "This is a comment card with"
089 + " a very long comment line which does not"
090 + " fit on a single card");
091 System.out.println(kw);
092 System.out.println("-- Test special cases ----------");
093 kw = new FitsKeyword("Ctest", 12, "Test integer conversion");
094 System.out.println(kw);
095 System.out.println("Read int as B,R : " + kw.getBool()
096 + ", " + kw.getReal());
097 kw = new FitsKeyword("Ctest", 12.32, "Test real conversion");
098 System.out.println(kw);
099 System.out.println("Read real as B,I,D : " + kw.getBool()
100 + ", " + kw.getInt()+ ", " + kw.getDate());
101 kw = new FitsKeyword("Cdate", "1949-02-12" , "Test date conversion");
102 System.out.println(kw);
103 System.out.println("Read string as D,I : " + kw.getDate()
104 + ", " + kw.getInt());
105 kw = new FitsKeyword("Cdate", "01/01/89" , "Test date conversion");
106 System.out.println(kw);
107 System.out.println("Read string as D,I : " + kw.getDate()
108 + ", " + kw.getInt() + ", " + kw.getReal());
109 kw = new FitsKeyword("Cdate", "1922.11.01" , "Test date conversion");
110 System.out.println(kw);
111 System.out.println("Read string as D,I : " + kw.getDate()
112 + ", " + kw.getInt());
113 kw = new FitsKeyword("LSTRING", "This is a string which will be" +
114 " truncated when written out" +
115 " to the FITS 80 character card", "");
116 System.out.println(kw);
117 System.out.println("Was truncated : " + kw.isValueTruncated());
118 try {
119 kw = new FitsKeyword("A_STRING= 'a word' / simple string keyword");
120 } catch (FitsException e) {
121 System.out.println("Exception: " + e);
122 }
123 System.out.println(kw);
124 System.out.println("Was modified : " + kw.isModified());
125 kw.setValue("Any string");
126 System.out.println(kw);
127 System.out.println("Was modified : " + kw.isModified());
128 System.out.println("Is empty card : " + kw.isEmpty());
129 try {
130 kw = new FitsKeyword(" ");
131 } catch (FitsException e) {
132 System.out.println("Exception: " + e);
133 }
134 System.out.println(kw);
135 System.out.println("Is empty card : " + kw.isEmpty());
136 System.out.println("Read string as D,I,R : " + kw.getDate()
137 + ", " + kw.getInt() + ", " + kw.getReal());
138 System.out.println("-- Test finished ---------------");
139 }
140
141 private static void testString(byte[] card) {
142 System.out.println("--------------------------------");
143 FitsKeyword kw = null;;
144 FitsKeyword key = null;
145 try {
146 kw = new FitsKeyword(card);
147 System.out.println(kw);
148 String str = kw.toString();
149 kw = new FitsKeyword(str);
150 System.out.println(kw);
151 } catch (FitsException e) {
152 System.out.println("FitsException>" + e);
153 return;
154 }
155 int type = kw.getType();
156 switch (type) {
157 case FitsKeyword.COMMENT:
158 System.out.println("->" + kw.getName() + "<C> "
159 + kw.getComment());
160 key = new FitsKeyword(kw.getName(), "");
161 System.out.println(key);
162 key.setName(kw.getName());
163 key.setComment(kw.getComment());
164 break;
165 case FitsKeyword.STRING:
166 System.out.println("->" + kw.getName() + "<S> "
167 + kw.getString() + " <> " + kw.getString());
168 key = new FitsKeyword(kw.getName(), "" , kw.getComment());
169 System.out.println(key);
170 key.setName(kw.getName());
171 key.setValue(kw.getString());
172 break;
173 case FitsKeyword.BOOLEAN:
174 System.out.println("->" + kw.getName() + "<B> "
175 + kw.getBool() + " <> " + kw.getString());
176 key = new FitsKeyword(kw.getName(), false, kw.getComment());
177 System.out.println(key);
178 key.setName(kw.getName());
179 key.setValue(kw.getBool());
180 break;
181 case FitsKeyword.INTEGER:
182 System.out.println("->" + kw.getName() + "<I> "
183 + kw.getInt() + " <> " + kw.getString());
184 key = new FitsKeyword(kw.getName(), -123L, kw.getComment());
185 System.out.println(key);
186 key.setName(kw.getName());
187 key.setValue(kw.getInt());
188 break;
189 case FitsKeyword.REAL:
190 System.out.println("->" + kw.getName() + "<R> "
191 + kw.getReal() + " <> " + kw.getString());
192 key = new FitsKeyword(kw.getName(), -213.32e-5, kw.getComment());
193 System.out.println(key);
194 key.setName(kw.getName());
195 key.setValue(kw.getReal());
196 break;
197 case FitsKeyword.DATE:
198 System.out.println("->" + kw.getName() + "<D> "
199 + kw.getDate() + " <> " + kw.getString());
200 key = new FitsKeyword("testkey", new Date(0), kw.getComment());
201 System.out.println(key);
202 key.setName(kw.getName());
203 key.setValue(kw.getDate());
204 break;
205 default:
206 }
207 System.out.println("->" + key.getName() + " ->> " + key.getString());
208 System.out.println(key);
209 }
210 }