Merge d191b69cba into 07eea0f484
				
					
				
			This commit is contained in:
		
						commit
						df5ffb71d6
					
				
							
								
								
									
										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 base64StringConverter } from './base64-string-converter'; | ||||||
| import { tool as basicAuthGenerator } from './basic-auth-generator'; | import { tool as basicAuthGenerator } from './basic-auth-generator'; | ||||||
| import { tool as emailNormalizer } from './email-normalizer'; | import { tool as emailNormalizer } from './email-normalizer'; | ||||||
|  | import { tool as energyComputer } from './energy-computer'; | ||||||
| 
 | 
 | ||||||
| import { tool as asciiTextDrawer } from './ascii-text-drawer'; | import { tool as asciiTextDrawer } from './ascii-text-drawer'; | ||||||
| 
 | 
 | ||||||
| @ -172,7 +173,12 @@ export const toolsByCategory: ToolCategory[] = [ | |||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: 'Measurement', |     name: 'Measurement', | ||||||
|     components: [chronometer, temperatureConverter, benchmarkBuilder], |     components: [ | ||||||
|  |       chronometer, | ||||||
|  |       temperatureConverter, | ||||||
|  |       benchmarkBuilder, | ||||||
|  |       energyComputer, | ||||||
|  |     ], | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     name: 'Text', |     name: 'Text', | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user