UNPKG

lipdjs

Version:

A JavaScript library for reading and writing LiPD (Linked Paleo Data) files

103 lines (78 loc) 4.03 kB
import { LiPD } from '../lipd'; import * as path from 'path'; import * as fs from 'fs'; import { Dataset } from '../classes/dataset'; describe('LiPD File Loading Tests', () => { const testDataDir = path.join(__dirname, '../../examples/data'); test('should load a single LiPD file', async () => { const lipd = new LiPD(); const testFile = path.join(testDataDir, 'Ant-WAIS-Divide.Severinghaus.2012.lpd'); await lipd.load(testFile); // Check if the file was loaded successfully const datasetNames = await lipd.getAllDatasetNames(); expect(datasetNames.length).toBeGreaterThan(0); expect(datasetNames[0]).toContain('Ant-WAIS-Divide'); }); test('should load multiple LiPD files', async () => { const lipd = new LiPD(); const testFiles = [ 'Ant-WAIS-Divide.Severinghaus.2012.lpd', 'MyWonderfulRecord.LinkedEarth.2024.lpd' ].map(file => path.join(testDataDir, file)); await lipd.load(testFiles); const datasetNames = await lipd.getAllDatasetNames(); expect(datasetNames.length).toBe(2); expect(datasetNames).toContain('Ant-WAIS-Divide.Severinghaus.2012'); expect(datasetNames).toContain('MyWonderfulRecord.LinkedEarth.2024'); }); test('should load all LiPD files from directory', async () => { const lipd = new LiPD(); await lipd.loadFromDir(testDataDir); const datasetNames = await lipd.getAllDatasetNames(); expect(datasetNames.length).toBeGreaterThan(0); // Check if all example files are loaded const files = fs.readdirSync(testDataDir); const lpdFiles = files.filter(file => file.endsWith('.lpd')); expect(datasetNames.length).toBe(lpdFiles.length); }); test('should convert LiPD file to Dataset class', async () => { const lipd = new LiPD(); const testFile = path.join(testDataDir, 'Ant-WAIS-Divide.Severinghaus.2012.lpd'); await lipd.load(testFile); // Get the dataset names and convert the first one to a Dataset class const datasetNames = await lipd.getAllDatasetNames(); expect(datasetNames.length).toBeGreaterThan(0); // Debug: Print the dataset names // console.log('Dataset names:', datasetNames); const dataset = (await lipd.getDatasets())[0] // Debug: Print the dataset properties // console.log('Dataset name:', dataset.getName()); // console.log('Dataset ID:', dataset.getDatasetId()); // console.log('Dataset type:', dataset.constructor.name); // Verify the Dataset class properties expect(dataset).toBeInstanceOf(Dataset); expect(dataset.getName()).toBeTruthy(); expect(dataset.getDatasetId()).toBeTruthy(); // Check if the dataset has the expected structure expect(dataset.getPaleoData().length).toBeGreaterThan(0); expect(dataset.getChronData()).toBeDefined(); expect(dataset.getLocation()?.getLatitude()).toBeDefined(); // Verify the dataset name matches expect(dataset.getName()).toContain('Ant-WAIS-Divide'); }); test('should load datasets into a new LiPD object', async () => { const lipd = new LiPD(); await lipd.loadFromDir(testDataDir); const datasets = await lipd.getDatasets(); const lipd2 = new LiPD(); lipd2.loadDatasets(datasets); const datasetNames = await lipd2.getAllDatasetNames(); expect(datasetNames.length).toBe(datasets.length); lipd2.createLipd(datasetNames[0], '/tmp/test.lpd'); const lipd3 = new LiPD(); await lipd3.load('/tmp/test.lpd'); const datasetNames2 = await lipd3.getAllDatasetNames(); expect(datasetNames2.length).toBe(1); expect(datasetNames2[0]).toBe(datasetNames[0]); }); });