1 package nom.tam.fits.test;
4 import static org.junit.Assert.assertEquals;
5 import junit.framework.JUnit4TestAdapter;
7 import nom.tam.image.*;
13 /** Test the ImageHDU, ImageData and ImageTiler classes.
14 * - multiple HDU's in a single file
15 * - deferred input of HDUs
16 * - creating and reading arrays of all permitted types.
17 * - Tiles of 1, 2 and 3 dimensions
19 * - from internal data
20 * - Multiple tiles extracted from an image.
22 public class ImageTest {
25 public void test() throws Exception {
29 byte[][] bimg = new byte[40][40];
30 for (int i = 10; i < 30; i += 1) {
31 for (int j = 10; j < 30; j += 1) {
32 bimg[i][j] = (byte) (i + j);
36 short[][] simg = (short[][]) ArrayFuncs.convertArray(bimg, short.class);
37 int[][] iimg = (int[][]) ArrayFuncs.convertArray(bimg, int.class);
38 long[][] limg = (long[][]) ArrayFuncs.convertArray(bimg, long.class);
39 float[][] fimg = (float[][]) ArrayFuncs.convertArray(bimg, float.class);
40 double[][] dimg = (double[][]) ArrayFuncs.convertArray(bimg, double.class);
41 int[][][] img3 = new int[10][20][30];
42 for (int i = 0; i < 10; i += 1) {
43 for (int j = 0; j < 20; j += 1) {
44 for (int k = 0; k < 30; k += 1) {
45 img3[i][j][k] = i + j + k;
50 double[] img1 = (double[]) ArrayFuncs.flatten(dimg);
52 // Make HDUs of various types.
53 f.addHDU(Fits.makeHDU(bimg));
54 f.addHDU(Fits.makeHDU(simg));
55 f.addHDU(Fits.makeHDU(iimg));
56 f.addHDU(Fits.makeHDU(limg));
57 f.addHDU(Fits.makeHDU(fimg));
58 f.addHDU(Fits.makeHDU(dimg));
59 f.addHDU(Fits.makeHDU(img3));
60 f.addHDU(Fits.makeHDU(img1));
62 assertEquals("HDU count before", f.getNumberOfHDUs(), 8);
67 BufferedFile bf = new BufferedFile("image1.fits", "rw");
76 bf = new BufferedFile("image1.fits");
79 f = new Fits("image1.fits");
80 BasicHDU[] hdus = f.read();
82 assertEquals("HDU count after", f.getNumberOfHDUs(), 8);
83 assertEquals("byte image", true, ArrayFuncs.arrayEquals(bimg, hdus[0].getData().getKernel()));
84 assertEquals("short image", true, ArrayFuncs.arrayEquals(simg, hdus[1].getData().getKernel()));
85 assertEquals("int image", true, ArrayFuncs.arrayEquals(iimg, hdus[2].getData().getKernel()));
86 assertEquals("long image", true, ArrayFuncs.arrayEquals(limg, hdus[3].getData().getKernel()));
87 assertEquals("float image", true, ArrayFuncs.arrayEquals(fimg, hdus[4].getData().getKernel()));
88 assertEquals("double image", true, ArrayFuncs.arrayEquals(dimg, hdus[5].getData().getKernel()));
89 assertEquals("int3 image", true, ArrayFuncs.arrayEquals(img3, hdus[6].getData().getKernel()));
90 assertEquals("double1 image", true, ArrayFuncs.arrayEquals(img1, hdus[7].getData().getKernel()));
94 public void fileTest() throws Exception {
96 byte[][] bimg = new byte[40][40];
97 for (int i = 10; i < 30; i += 1) {
98 for (int j = 10; j < 30; j += 1) {
99 bimg[i][j] = (byte) (i + j);
103 short[][] simg = (short[][]) ArrayFuncs.convertArray(bimg, short.class);
104 int[][] iimg = (int[][]) ArrayFuncs.convertArray(bimg, int.class);
105 long[][] limg = (long[][]) ArrayFuncs.convertArray(bimg, long.class);
106 float[][] fimg = (float[][]) ArrayFuncs.convertArray(bimg, float.class);
107 double[][] dimg = (double[][]) ArrayFuncs.convertArray(bimg, double.class);
108 int[][][] img3 = new int[10][20][30];
109 for (int i = 0; i < 10; i += 1) {
110 for (int j = 0; j < 20; j += 1) {
111 for (int k = 0; k < 30; k += 1) {
112 img3[i][j][k] = i + j + k;
116 double[] img1 = (double[]) ArrayFuncs.flatten(dimg);
118 Fits f = new Fits(new File("image1.fits"));
119 BasicHDU[] hdus = f.read();
121 assertEquals("fbyte image", true, ArrayFuncs.arrayEquals(bimg, hdus[0].getData().getKernel()));
122 assertEquals("fshort image", true, ArrayFuncs.arrayEquals(simg, hdus[1].getData().getKernel()));
123 assertEquals("fint image", true, ArrayFuncs.arrayEquals(iimg, hdus[2].getData().getKernel()));
124 assertEquals("flong image", true, ArrayFuncs.arrayEquals(limg, hdus[3].getData().getKernel()));
125 assertEquals("ffloat image", true, ArrayFuncs.arrayEquals(fimg, hdus[4].getData().getKernel()));
126 assertEquals("fdouble image", true, ArrayFuncs.arrayEquals(dimg, hdus[5].getData().getKernel()));
127 assertEquals("fint3 image", true, ArrayFuncs.arrayEquals(img3, hdus[6].getData().getKernel()));
128 assertEquals("fdouble1 image", true, ArrayFuncs.arrayEquals(img1, hdus[7].getData().getKernel()));