UNPKG

netcdf4-wasm

Version:

NetCDF4 library compiled to WebAssembly with TypeScript bindings

116 lines 4.42 kB
"use strict"; // Test setup utilities following netcdf4-python patterns var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.TestSetup = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); class TestSetup { static setupTestEnvironment() { // Create test directory if it doesn't exist if (!fs.existsSync(this.testDir)) { fs.mkdirSync(this.testDir, { recursive: true }); } } static getTestFilename(suffix = '') { this.fileCounter++; const filename = `test_${this.fileCounter}${suffix}.nc`; return path.join(this.testDir, filename); } static cleanupTestFile(filename) { try { if (fs.existsSync(filename)) { fs.unlinkSync(filename); } } catch (error) { // Ignore cleanup errors in tests } } static cleanupTestEnvironment() { try { if (fs.existsSync(this.testDir)) { const files = fs.readdirSync(this.testDir); for (const file of files) { fs.unlinkSync(path.join(this.testDir, file)); } fs.rmdirSync(this.testDir); } } catch (error) { // Ignore cleanup errors } } // Mock WASM module for testing when real module isn't available static mockWasmModule() { if (typeof global.NetCDF4Module === 'undefined') { global.NetCDF4Module = jest.fn().mockRejectedValue(new Error('NetCDF4Module not available in test environment')); return true; // Indicates we're in mock mode } return false; // Real module available } // Create test data arrays static createTestData(shape) { const size = shape.reduce((a, b) => a * b, 1); const data = new Float64Array(size); for (let i = 0; i < size; i++) { data[i] = i * 0.1; // Simple test pattern } return data; } // Create temperature test data (common in netCDF examples) static createTemperatureData(nlat, nlon) { const data = new Float64Array(nlat * nlon); for (let i = 0; i < nlat; i++) { for (let j = 0; j < nlon; j++) { // Simple temperature pattern: varies with latitude const lat = -90 + (i * 180) / (nlat - 1); data[i * nlon + j] = 273.15 + 30 * Math.cos((lat * Math.PI) / 180); } } return data; } // Assert arrays are approximately equal (for floating point comparisons) static assertArraysAlmostEqual(actual, expected, tolerance = 1e-10) { expect(actual.length).toBe(expected.length); for (let i = 0; i < actual.length; i++) { expect(Math.abs(actual[i] - expected[i])).toBeLessThanOrEqual(tolerance); } } } exports.TestSetup = TestSetup; TestSetup.testDir = '/tmp/netcdf4-wasm-tests'; TestSetup.fileCounter = 0; //# sourceMappingURL=test-setup.js.map