EMMA Coverage Report (generated Wed Apr 19 22:57:21 CEST 2006)
[all classes][com.eaio.nativecall]

COVERAGE SUMMARY FOR SOURCE FILE [FileManagementTest1Win32.java]

nameclass, %method, %block, %line, %
FileManagementTest1Win32.java100% (1/1)71%  (5/7)70%  (258/370)72%  (69/96)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class FileManagementTest1Win32100% (1/1)71%  (5/7)70%  (258/370)72%  (69/96)
main (String []): void 0%   (0/1)0%   (0/17)0%   (0/2)
testGetVolumeInformation (): void 0%   (0/1)0%   (0/82)0%   (0/19)
<static initializer> 100% (1/1)33%  (3/9)40%  (2/5)
testCreateFile (): void 100% (1/1)94%  (91/97)90%  (26/29)
testGetFileAttributesEx (): void 100% (1/1)98%  (39/40)100% (9/9)
FileManagementTest1Win32 (String): void 100% (1/1)100% (4/4)100% (2/2)
testGetTempPath (): void 100% (1/1)100% (121/121)100% (30/30)

1/*
2 * FileManagementTest1Win32.java
3 * 
4 * Created on 11.12.2004
5 *
6 * eaio: NativeCall - calling operating system methods from Java
7 * Copyright (c) 2004-2006 Johann Burkard (<mailto:jb@eaio.com>)
8 * <http://eaio.com>
9 * 
10 * Permission is hereby granted, free of charge, to any person obtaining a
11 * copy of this software and associated documentation files (the "Software"),
12 * to deal in the Software without restriction, including without limitation
13 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 * and/or sell copies of the Software, and to permit persons to whom the
15 * Software is furnished to do so, subject to the following conditions:
16 * 
17 * The above copyright notice and this permission notice shall be included
18 * in all copies or substantial portions of the Software.
19 * 
20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
23 * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
24 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
25 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
26 * USE OR OTHER DEALINGS IN THE SOFTWARE.
27 * 
28 */
29 
30package com.eaio.nativecall;
31 
32import java.io.File;
33import java.security.AccessController;
34import java.util.Arrays;
35 
36import junit.framework.TestCase;
37import sun.security.action.GetPropertyAction;
38 
39/**
40 * Some more complicated tests for general file management functions.
41 * 
42 * @author <a href="mailto:jb@eaio.com">Johann Burkard</a>
43 * @version $Id: FileManagementTest1Win32.java,v 1.3 2006/04/12 22:11:41 grnull Exp $
44 */
45public class FileManagementTest1Win32 extends TestCase {
46 
47    static {
48        try {
49            NativeCall.init();
50        }
51        catch (Throwable thrw) {
52            thrw.printStackTrace();
53            fail(thrw.getLocalizedMessage());
54        }
55    }
56 
57    /**
58     * Constructor for FileManagementTest1Win32.
59     * @param arg0
60     */
61    public FileManagementTest1Win32(String arg0) {
62        super(arg0);
63    }
64 
65    public static void main(String[] args) {
66        junit.awtui.TestRunner.run(FileManagementTest1Win32.class);
67    }
68 
69    public void testGetTempPath() {
70 
71        IntCall getTempPathA = new IntCall("GetTempPathA");
72 
73        byte[] byteBuf = new byte[256];
74 
75        int bufLength =
76            getTempPathA.executeCall(
77                new Object[] { new Integer(byteBuf.length), byteBuf });
78 
79        String path = new String(byteBuf, 0, bufLength);
80 
81        File tempDir = new File(path);
82        assertTrue(tempDir.exists());
83        assertTrue(tempDir.isDirectory());
84 
85        GetPropertyAction a = new GetPropertyAction("java.io.tmpdir");
86 
87        assertEquals(
88            tempDir,
89            new File(((String) AccessController.doPrivileged(a))));
90 
91        getTempPathA.destroy();
92 
93        IntCall getTempPathW = new IntCall("kernel32", "GetTempPathW");
94 
95        char[] charBuf = new char[256];
96 
97        bufLength =
98            getTempPathW.executeCall(
99                new Object[] { new Integer(charBuf.length), charBuf });
100        assertEquals(0, getTempPathW.getLastErrorCode());
101 
102        path = new String(charBuf, 0, bufLength);
103 
104        tempDir = new File(path);
105        assertTrue(tempDir.exists());
106        assertTrue(tempDir.isDirectory());
107 
108        assertEquals(
109            tempDir,
110            new File(((String) AccessController.doPrivileged(a))));
111 
112        getTempPathW.destroy();
113        assertEquals(0, getTempPathW.getLastErrorCode());
114 
115    }
116 
117    public void testCreateFile() {
118 
119        File target = new File("documents/file_management_test.txt");
120 
121        IntCall createFileA = new IntCall("CreateFileA");
122        IntCall closeHandle = new IntCall("CloseHandle");
123 
124        byte[] securityAttributes = new byte[12];
125        securityAttributes[0] = (byte) 12;
126 
127        // Different methods to do the same
128 
129        int fileHandle = 0;
130 
131        try {
132 
133            fileHandle =
134                createFileA.executeCall(
135                    new Object[] {
136                        "documents/file_management_test.txt",
137                        new Integer(0x80000000 | 0x40000000 | 0x00010000),
138                        null,
139                        securityAttributes,
140                        new Integer(2),
141                        null,
142                        null });
143 
144        }
145        catch (NullPointerException ex) {
146            ex.printStackTrace();
147            fail(ex.getLocalizedMessage());
148        }
149 
150        assertEquals(0, createFileA.getLastErrorCode());
151        assertTrue(target.exists());
152 
153        boolean closed =
154            closeHandle.executeBooleanCall(new Integer(fileHandle));
155        assertEquals(0, closeHandle.getLastErrorCode());
156 
157        assertTrue(closed);
158 
159        createFileA.destroy();
160        assertEquals(0, createFileA.getLastErrorCode());
161        closeHandle.destroy();
162        assertEquals(0, closeHandle.getLastErrorCode());
163 
164        target.delete();
165 
166        assertFalse(target.exists());
167    }
168 
169    public void testGetVolumeInformation() {
170 
171        IntCall getVolumeInformationA = new IntCall("GetVolumeInformationA");
172 
173        Holder volumeSerialNumber = new Holder(new Integer(0));
174        Holder maximumComponentLength = new Holder(new Integer(0));
175        Holder fileSystemFlags = new Holder(new Integer(0));
176 
177        int result =
178            getVolumeInformationA.executeCall(
179                new Object[] {
180                    "c:\\",
181                    null,
182                    null,
183                    volumeSerialNumber,
184                    maximumComponentLength,
185                    fileSystemFlags,
186                    null,
187                    null });
188        assertEquals(0, getVolumeInformationA.getLastErrorCode());
189        assertNull(getVolumeInformationA.getLastError());
190        getVolumeInformationA.destroy();
191        assertEquals(0, getVolumeInformationA.getLastErrorCode());
192        assertNull(getVolumeInformationA.getLastError());
193 
194        assertTrue(result != 0);
195        assertTrue(((Integer) volumeSerialNumber.get()).intValue() != 0);
196 
197    }
198 
199    public void testGetFileAttributesEx() {
200 
201        IntCall getFileAttributesExA = new IntCall("GetFileAttributesExA");
202 
203        byte[] buf = new byte[36];
204        Arrays.fill(buf, (byte) 0xff);
205 
206        int success =
207            getFileAttributesExA.executeCall(
208                new Object[] { "c:\\autoexec.bat", new Integer(0), buf });
209        getFileAttributesExA.destroy();
210        assertTrue(0 != success);
211 
212//        try {
213//            new HexDumpEncoder().encodeBuffer(buf, System.out);
214//        }
215//        catch (IOException ex) {
216//            ex.printStackTrace();
217//            fail(ex.toString());
218//        }
219//
220//        if (success == 0) {
221//            IntCall getLastError = new IntCall("GetLastError");
222//            System.out.println(getLastError.executeCall());
223//            getLastError.destroy();
224//        }
225 
226    }
227 
228}

[all classes][com.eaio.nativecall]
EMMA 2.0.4217 (C) Vladimir Roubtsov