1*65c59e02SInna Palant /* 2*65c59e02SInna Palant * Copyright (c) Facebook, Inc. and its affiliates. 3*65c59e02SInna Palant * 4*65c59e02SInna Palant * Licensed under the Apache License, Version 2.0 (the "License"); 5*65c59e02SInna Palant * you may not use this file except in compliance with the License. 6*65c59e02SInna Palant * You may obtain a copy of the License at 7*65c59e02SInna Palant * 8*65c59e02SInna Palant * http://www.apache.org/licenses/LICENSE-2.0 9*65c59e02SInna Palant * 10*65c59e02SInna Palant * Unless required by applicable law or agreed to in writing, software 11*65c59e02SInna Palant * distributed under the License is distributed on an "AS IS" BASIS, 12*65c59e02SInna Palant * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*65c59e02SInna Palant * See the License for the specific language governing permissions and 14*65c59e02SInna Palant * limitations under the License. 15*65c59e02SInna Palant */ 16*65c59e02SInna Palant 17*65c59e02SInna Palant package com.facebook.jni; 18*65c59e02SInna Palant 19*65c59e02SInna Palant import static org.assertj.core.api.Assertions.assertThat; 20*65c59e02SInna Palant 21*65c59e02SInna Palant import java.nio.Buffer; 22*65c59e02SInna Palant import java.nio.ByteBuffer; 23*65c59e02SInna Palant import java.nio.ByteOrder; 24*65c59e02SInna Palant import java.nio.FloatBuffer; 25*65c59e02SInna Palant import org.junit.Test; 26*65c59e02SInna Palant 27*65c59e02SInna Palant public class ByteBufferTests extends BaseFBJniTests { 28*65c59e02SInna Palant @Test testDirectByteBuffer()29*65c59e02SInna Palant public void testDirectByteBuffer() { 30*65c59e02SInna Palant assertThat(nativeTestDirectByteBuffer()).isTrue(); 31*65c59e02SInna Palant } 32*65c59e02SInna Palant nativeTestDirectByteBuffer()33*65c59e02SInna Palant public static native boolean nativeTestDirectByteBuffer(); 34*65c59e02SInna Palant 35*65c59e02SInna Palant @Test testEmptyDirectByteBuffer()36*65c59e02SInna Palant public void testEmptyDirectByteBuffer() { 37*65c59e02SInna Palant assertThat(nativeTestEmptyDirectByteBuffer()).isTrue(); 38*65c59e02SInna Palant } 39*65c59e02SInna Palant nativeTestEmptyDirectByteBuffer()40*65c59e02SInna Palant public static native boolean nativeTestEmptyDirectByteBuffer(); 41*65c59e02SInna Palant 42*65c59e02SInna Palant @Test testRewindBuffer()43*65c59e02SInna Palant public void testRewindBuffer() { 44*65c59e02SInna Palant assertThat(nativeTestRewindBuffer()).isTrue(); 45*65c59e02SInna Palant } 46*65c59e02SInna Palant nativeTestRewindBuffer()47*65c59e02SInna Palant public native boolean nativeTestRewindBuffer(); 48*65c59e02SInna Palant 49*65c59e02SInna Palant @Test testAllocateDirect()50*65c59e02SInna Palant public void testAllocateDirect() { 51*65c59e02SInna Palant ByteBuffer buffer = nativeAllocateDirect(5); 52*65c59e02SInna Palant assertThat(buffer.isDirect()).isTrue(); 53*65c59e02SInna Palant assertThat(buffer.capacity()).isEqualTo(5); 54*65c59e02SInna Palant } 55*65c59e02SInna Palant nativeAllocateDirect(int size)56*65c59e02SInna Palant public native ByteBuffer nativeAllocateDirect(int size); 57*65c59e02SInna Palant 58*65c59e02SInna Palant // called from native writeBytes(ByteBuffer dest, byte a, byte b, byte c, byte d)59*65c59e02SInna Palant public static void writeBytes(ByteBuffer dest, byte a, byte b, byte c, byte d) { 60*65c59e02SInna Palant dest.put(a).put(b).put(c).put(d); 61*65c59e02SInna Palant } 62*65c59e02SInna Palant 63*65c59e02SInna Palant @Test testFloatBuffer()64*65c59e02SInna Palant public void testFloatBuffer() { 65*65c59e02SInna Palant final int BUFFER_COUNT = 5; 66*65c59e02SInna Palant final int FLOAT_SIZE = 4; 67*65c59e02SInna Palant FloatBuffer buffer = 68*65c59e02SInna Palant ByteBuffer.allocateDirect(BUFFER_COUNT * FLOAT_SIZE) 69*65c59e02SInna Palant .order(ByteOrder.nativeOrder()) 70*65c59e02SInna Palant .asFloatBuffer(); 71*65c59e02SInna Palant buffer.put(1f); 72*65c59e02SInna Palant buffer.put(2f); 73*65c59e02SInna Palant buffer.put(2.5f); 74*65c59e02SInna Palant buffer.put(2.75f); 75*65c59e02SInna Palant buffer.put(3f); 76*65c59e02SInna Palant assertThat(nativeTestFloatBuffer(buffer)).isTrue(); 77*65c59e02SInna Palant } 78*65c59e02SInna Palant nativeTestFloatBuffer(Buffer buffer)79*65c59e02SInna Palant public native boolean nativeTestFloatBuffer(Buffer buffer); 80*65c59e02SInna Palant 81*65c59e02SInna Palant @Test testByteBufferOrder()82*65c59e02SInna Palant public void testByteBufferOrder() { 83*65c59e02SInna Palant ByteBuffer buffer = nativeByteBufferOrder(); 84*65c59e02SInna Palant assertThat(buffer.getInt()).isEqualTo(1); 85*65c59e02SInna Palant } 86*65c59e02SInna Palant nativeByteBufferOrder()87*65c59e02SInna Palant public native ByteBuffer nativeByteBufferOrder(); 88*65c59e02SInna Palant } 89