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    }