UNPKG

coolprop-node

Version:

A Node.js wrapper for CoolProp providing an easy-to-use interface for thermodynamic calculations and refrigerant properties. Unlike all the other CoolProp npm packages I've seen, this one should actually work. Please report any issues.

128 lines (117 loc) 4.28 kB
const coolprop = require('../src/index.js'); describe('Temperature Conversion Tests', () => { describe('Regular Temperature Conversions', () => { const testCases = [ { startUnit: 'C', startValue: 25, expectedK: 298.15, conversions: { F: 77, K: 298.15, C: 25 } }, { startUnit: 'F', startValue: 77, expectedK: 298.15, conversions: { F: 77, K: 298.15, C: 25 } }, { startUnit: 'K', startValue: 298.15, expectedK: 298.15, conversions: { F: 77, K: 298.15, C: 25 } } ]; testCases.forEach(({ startUnit, startValue, expectedK, conversions }) => { test(`${startValue}${startUnit} conversion chain`, () => { // First convert to Kelvin const toK = coolprop._convertTempToK(startValue, startUnit); expect(Math.round(toK * 100) / 100).toBe(expectedK); // Then convert from Kelvin to each unit Object.entries(conversions).forEach(([unit, expected]) => { const converted = coolprop._convertTempFromK(toK, unit); expect(Math.round(converted * 100) / 100).toBe(expected); }); }); }); }); describe('Delta Temperature Conversions', () => { const testCases = [ { startValue: 10, // 10K temperature difference expected: { K: 10, C: 10, F: 18 // 10K = 18°F difference } } ]; testCases.forEach(({ startValue, expected }) => { test(`${startValue}K delta conversion to all units`, () => { Object.entries(expected).forEach(([unit, expectedValue]) => { const converted = coolprop._convertDeltaTempFromK(startValue, unit); expect(Math.round(converted * 100) / 100).toBe(expectedValue); }); }); }); }); describe('Common Temperature Points', () => { const commonPoints = [ { description: 'Water freezing point', C: 0, F: 32, K: 273.15 }, { description: 'Water boiling point', C: 100, F: 212, K: 373.15 }, { description: 'Room temperature', C: 20, F: 68, K: 293.15 }, { description: 'Typical refrigeration evaporator', C: 5, F: 41, K: 278.15 }, { description: 'Typical refrigeration condenser', C: 35, F: 95, K: 308.15 } ]; commonPoints.forEach(point => { test(`${point.description} conversions`, () => { // Test conversion to Kelvin from each unit const fromC = coolprop._convertTempToK(point.C, 'C'); const fromF = coolprop._convertTempToK(point.F, 'F'); expect(Math.round(fromC * 100) / 100).toBe(point.K); expect(Math.round(fromF * 100) / 100).toBe(point.K); // Test conversion from Kelvin to each unit const toC = coolprop._convertTempFromK(point.K, 'C'); const toF = coolprop._convertTempFromK(point.K, 'F'); expect(Math.round(toC * 100) / 100).toBe(point.C); expect(Math.round(toF * 100) / 100).toBe(point.F); }); }); }); });