/*
 *  This file is part of the Jikes RVM project (http://jikesrvm.org).
 *
 *  This file is licensed to You under the Common Public License (CPL);
 *  You may not use this file except in compliance with the License. You
 *  may obtain a copy of the License at
 *
 *      http://www.opensource.org/licenses/cpl1.0.php
 *
 *  See the COPYRIGHT.txt file distributed with this work for information
 *  regarding copyright ownership.
 */
package test.org.jikesrvm.basic.java.nio;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;

public class TestFileChannel {
  private static final int MAGIC_INT = 0xdeadbeef;

  public static void main(String[] args) {
    File file = null;
    try {
      file = File.createTempFile("TestFileChannel", ".dat");
      final ByteBuffer buffer = ByteBuffer.allocateDirect(4);
      final ByteChannel output = new FileOutputStream(file).getChannel();
      buffer.putInt(MAGIC_INT);
      buffer.flip();
      output.write(buffer);
      output.close();

      final ByteChannel input = new FileInputStream(file).getChannel();
      buffer.clear();
      while (buffer.hasRemaining()) { input.read(buffer); }
      input.close();
      buffer.flip();
      final int file_int = buffer.getInt();
      if (file_int != MAGIC_INT) {
        System.out.println("TestFileChannel FAILURE");
        System.out.println("Wrote " + Integer.toHexString(MAGIC_INT) + " but read " + Integer.toHexString(file_int));
      } else {
        System.out.println("TestFileChannel SUCCESS");
      }
    } catch (Exception e) {
      System.out.println("TestFileChannel FAILURE");
      e.printStackTrace(System.out);
    } finally {
      if (null != file) {
        file.delete();
      }
    }
  }
}
