react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
67 lines (54 loc) • 2.19 kB
text/typescript
import { FilamentProxy } from '../native/FilamentProxy'
const FIBONACCI_LIMIT = 70
export async function testHybridObject(): Promise<void> {
// 1. Creation
console.log('Creating HybridObject...')
const hybridObject = FilamentProxy.createTestObject()
console.log('Created HybridObject!')
// 2. Logging the entire thing as JSON
console.log(hybridObject)
// 3. Int Getter & Setter
console.log(`Int: ${hybridObject.int}`)
hybridObject.int = 6723
console.log(`New Int: ${hybridObject.int}`)
// 4. Enum Getter & Setter
console.log(`Enum: ${hybridObject.enum}`)
hybridObject.enum = 'second'
console.log(`New Enum: ${hybridObject.enum}`)
// 5. String Getter & Setter
console.log(`String: ${hybridObject.string}`)
hybridObject.string = 'new string value!'
console.log(`New String: ${hybridObject.string}`)
// 6. Nullable String Getter & Setter
console.log(`Nullable String: ${hybridObject.nullableString}`)
hybridObject.nullableString = 'now its not null!'
console.log(`New Nullable String: ${hybridObject.nullableString}`)
// 7. Testing multiple arguments and maps
const result = hybridObject.multipleArguments(5, true, 'hahah!')
console.log(`multipleArguments() -> ${JSON.stringify(result)}`)
// 8. Testing callbacks
hybridObject.sayHelloCallback(() => 'hello from JS!')
const getter = hybridObject.getIntGetter()
console.log(`Int getter: ${getter()}`)
// 9. Create a new one
const newObject = hybridObject.createNewHybridObject()
console.log(`Created new hybrid object!`, newObject)
// 10. Test Promises
console.log(`Calculating Fibonacci up to number ${FIBONACCI_LIMIT}...`)
const start = performance.now()
const fibonacci = await hybridObject.calculateFibonacciAsync(FIBONACCI_LIMIT)
const end = performance.now()
console.log(`Calculated Fibonacci for ${FIBONACCI_LIMIT} = ${fibonacci} (took ${(end - start).toFixed(0)}ms)`)
}
// @ts-expect-error
// eslint-disable-next-line @typescript-eslint/no-unused-vars
function fib(count: number): BigInt {
let prev = 0n
let current = 1n
for (let i = 2; i <= count; ++i) {
let next = prev + current
prev = current
current = next
}
return current
}