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 }