1
1
// eslint-disable-next-line import/no-extraneous-dependencies
2
2
import { assert , type Equals } from "tsafe" ;
3
3
4
- import { type UnitSubvalues , type Unit } from "./core" ;
4
+ import { type AbstractUnit , type UnitSubvalues , type Unit } from "./core" ;
5
5
import {
6
6
type Exponent ,
7
7
type DivideExponents ,
@@ -22,6 +22,8 @@ export type MultiplyUnitExponents<
22
22
FlatternAlias < MultiplyUnitSubvaluesExponents < Config , E > > ,
23
23
FlatternAlias < MultiplyUnitSubvaluesExponents < Meta , E > >
24
24
>
25
+ : T extends AbstractUnit < infer Config >
26
+ ? AbstractUnit < FlatternAlias < MultiplyUnitSubvaluesExponents < Config , E > > >
25
27
: number ;
26
28
27
29
type MultiplyUnitSubvaluesExponents <
@@ -44,6 +46,8 @@ export type DivideUnitExponents<
44
46
FlatternAlias < DivideUnitSubvaluesExponents < Config , E > > ,
45
47
FlatternAlias < DivideUnitSubvaluesExponents < Meta , E > >
46
48
>
49
+ : T extends AbstractUnit < infer Config >
50
+ ? AbstractUnit < FlatternAlias < DivideUnitSubvaluesExponents < Config , E > > >
47
51
: number ;
48
52
49
53
type DivideUnitSubvaluesExponents <
@@ -69,4 +73,78 @@ if (import.meta.vitest !== undefined) {
69
73
assert < Equals < DivideUnitExponents < Unit < { a : 6 } > , 3 > , Unit < { a : 2 } > > > ( ) ;
70
74
assert < Equals < DivideUnitExponents < Unit < { a : 3 } > , 3 > , Unit < { a : 1 } > > > ( ) ;
71
75
assert < Equals < DivideUnitExponents < Unit < { a : - 3 } > , 3 > , Unit < { a : - 1 } > > > ( ) ;
76
+
77
+ assert <
78
+ Equals <
79
+ MultiplyUnitExponents < AbstractUnit < { a : 1 } > , 2 > ,
80
+ AbstractUnit < { a : 2 } >
81
+ >
82
+ > ( ) ;
83
+ assert <
84
+ Equals <
85
+ MultiplyUnitExponents < AbstractUnit < { a : 2 } > , 2 > ,
86
+ AbstractUnit < { a : 4 } >
87
+ >
88
+ > ( ) ;
89
+ assert <
90
+ Equals <
91
+ MultiplyUnitExponents < AbstractUnit < { a : - 2 } > , 2 > ,
92
+ AbstractUnit < { a : - 4 } >
93
+ >
94
+ > ( ) ;
95
+ assert <
96
+ Equals <
97
+ MultiplyUnitExponents < AbstractUnit < { a : 1 } > , 3 > ,
98
+ AbstractUnit < { a : 3 } >
99
+ >
100
+ > ( ) ;
101
+ assert <
102
+ Equals <
103
+ MultiplyUnitExponents < AbstractUnit < { a : 2 } > , 3 > ,
104
+ AbstractUnit < { a : 6 } >
105
+ >
106
+ > ( ) ;
107
+ assert <
108
+ Equals <
109
+ MultiplyUnitExponents < AbstractUnit < { a : - 2 } > , 3 > ,
110
+ AbstractUnit < { a : - 6 } >
111
+ >
112
+ > ( ) ;
113
+
114
+ assert <
115
+ Equals <
116
+ DivideUnitExponents < AbstractUnit < { a : 4 } > , 2 > ,
117
+ AbstractUnit < { a : 2 } >
118
+ >
119
+ > ( ) ;
120
+ assert <
121
+ Equals <
122
+ DivideUnitExponents < AbstractUnit < { a : 2 } > , 2 > ,
123
+ AbstractUnit < { a : 1 } >
124
+ >
125
+ > ( ) ;
126
+ assert <
127
+ Equals <
128
+ DivideUnitExponents < AbstractUnit < { a : - 2 } > , 2 > ,
129
+ AbstractUnit < { a : - 1 } >
130
+ >
131
+ > ( ) ;
132
+ assert <
133
+ Equals <
134
+ DivideUnitExponents < AbstractUnit < { a : 6 } > , 3 > ,
135
+ AbstractUnit < { a : 2 } >
136
+ >
137
+ > ( ) ;
138
+ assert <
139
+ Equals <
140
+ DivideUnitExponents < AbstractUnit < { a : 3 } > , 3 > ,
141
+ AbstractUnit < { a : 1 } >
142
+ >
143
+ > ( ) ;
144
+ assert <
145
+ Equals <
146
+ DivideUnitExponents < AbstractUnit < { a : - 3 } > , 3 > ,
147
+ AbstractUnit < { a : - 1 } >
148
+ >
149
+ > ( ) ;
72
150
}
0 commit comments