mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-20 06:55:06 -04:00
Merge d191b69cba
into 07eea0f484
This commit is contained in:
commit
df5ffb71d6
5 changed files with 104 additions and 1 deletions
53
src/tools/energy-computer/energy-computer.service.test.ts
Normal file
53
src/tools/energy-computer/energy-computer.service.test.ts
Normal file
|
@ -0,0 +1,53 @@
|
|||
import { describe, expect, it } from 'vitest';
|
||||
|
||||
import { computeCost } from './energy-computer.service'; // Adjust the import path as needed
|
||||
|
||||
describe('computeCost', () => {
|
||||
it('should calculate the correct cost for valid inputs', () => {
|
||||
const wattage = 1000; // 1000 watts = 1 kW
|
||||
const duration = 5; // 5 hours
|
||||
const kWhCost = 0.12; // $0.12 per kWh
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBeCloseTo(0.60); // 1 kW * 5h * 0.12 = 0.60
|
||||
});
|
||||
|
||||
it('should return 0 when the duration is 0', () => {
|
||||
const wattage = 1000;
|
||||
const duration = 0;
|
||||
const kWhCost = 0.12;
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBe(0);
|
||||
});
|
||||
|
||||
it('should return 0 when the wattage is 0', () => {
|
||||
const wattage = 0;
|
||||
const duration = 5;
|
||||
const kWhCost = 0.12;
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBe(0);
|
||||
});
|
||||
|
||||
it('should return 0 when the cost per kWh is 0', () => {
|
||||
const wattage = 1000;
|
||||
const duration = 5;
|
||||
const kWhCost = 0;
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBe(0);
|
||||
});
|
||||
|
||||
it('should handle fractional wattage and duration correctly', () => {
|
||||
const wattage = 750; // 0.75 kW
|
||||
const duration = 2.5; // 2.5 hours
|
||||
const kWhCost = 0.10; // $0.10 per kWh
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBeCloseTo(0.1875); // 0.75 kW * 2.5h * 0.10 = 0.1875
|
||||
});
|
||||
|
||||
it('should handle large numbers correctly', () => {
|
||||
const wattage = 1000000; // 1 MW
|
||||
const duration = 24; // 24 hours
|
||||
const kWhCost = 0.15; // $0.15 per kWh
|
||||
const result = computeCost(wattage, duration, kWhCost);
|
||||
expect(result).toBe(3600); // 1000 kW * 24h * 0.15 = 3600
|
||||
});
|
||||
});
|
6
src/tools/energy-computer/energy-computer.service.ts
Normal file
6
src/tools/energy-computer/energy-computer.service.ts
Normal file
|
@ -0,0 +1,6 @@
|
|||
export function computeCost(wattage: number, durationHours: number, costPerKWh: number): number {
|
||||
const kilowatts = wattage / 1000;
|
||||
const energyConsumed = kilowatts * durationHours;
|
||||
const totalCost = energyConsumed * costPerKWh;
|
||||
return totalCost;
|
||||
}
|
26
src/tools/energy-computer/energy-computer.vue
Normal file
26
src/tools/energy-computer/energy-computer.vue
Normal file
|
@ -0,0 +1,26 @@
|
|||
<script setup lang="ts">
|
||||
import { computeCost } from './energy-computer.service';
|
||||
|
||||
const wattage = ref(100);
|
||||
const durationHours = ref(2);
|
||||
const kWhCost = ref(0.1);
|
||||
const totalCost = computed(() => computeCost(wattage.value, durationHours.value, kWhCost.value));
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<n-form-item label="Device Wattage" mb-1>
|
||||
<n-input-number v-model:value="wattage" :min="0" />
|
||||
</n-form-item>
|
||||
<n-form-item label="Usage Duration (hours)" mb-1>
|
||||
<n-input-number v-model:value="durationHours" :min="0" />
|
||||
</n-form-item>
|
||||
<n-form-item label="kWh Cost" mb-1>
|
||||
<n-input-number v-model:value="kWhCost" :min="0" />
|
||||
</n-form-item>
|
||||
|
||||
<n-divider />
|
||||
|
||||
<input-copyable label="Total Cost" :value="totalCost" />
|
||||
</div>
|
||||
</template>
|
12
src/tools/energy-computer/index.ts
Normal file
12
src/tools/energy-computer/index.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { Engine } from '@vicons/tabler';
|
||||
import { defineTool } from '../tool';
|
||||
|
||||
export const tool = defineTool({
|
||||
name: 'Energy Consumption and Expense Computer',
|
||||
path: '/energy-computer',
|
||||
description: 'Compute energy consumption and expense',
|
||||
keywords: ['energy', 'expense', 'watt', 'kwh', 'computer'],
|
||||
component: () => import('./energy-computer.vue'),
|
||||
icon: Engine,
|
||||
createdAt: new Date('2024-08-15'),
|
||||
});
|
|
@ -2,6 +2,7 @@ import { tool as base64FileConverter } from './base64-file-converter';
|
|||
import { tool as base64StringConverter } from './base64-string-converter';
|
||||
import { tool as basicAuthGenerator } from './basic-auth-generator';
|
||||
import { tool as emailNormalizer } from './email-normalizer';
|
||||
import { tool as energyComputer } from './energy-computer';
|
||||
|
||||
import { tool as asciiTextDrawer } from './ascii-text-drawer';
|
||||
|
||||
|
@ -172,7 +173,12 @@ export const toolsByCategory: ToolCategory[] = [
|
|||
},
|
||||
{
|
||||
name: 'Measurement',
|
||||
components: [chronometer, temperatureConverter, benchmarkBuilder],
|
||||
components: [
|
||||
chronometer,
|
||||
temperatureConverter,
|
||||
benchmarkBuilder,
|
||||
energyComputer,
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Text',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue