@@ -14,6 +14,16 @@ import {
1414} from "../../src/index.ts" ;
1515import type { Scalar } from "../../src/index.ts" ;
1616
17+ function dfFromSeries ( columns : Record < string , Series < Scalar > > ) : DataFrame {
18+ const colMap = new Map < string , Series < Scalar > > ( ) ;
19+ for ( const [ name , series ] of Object . entries ( columns ) ) {
20+ colMap . set ( name , series ) ;
21+ }
22+ const firstCol = Object . values ( columns ) [ 0 ] ;
23+ const index = new RangeIndex ( firstCol ?. size ?? 0 ) ;
24+ return new DataFrame ( colMap , index ) ;
25+ }
26+
1727// ─── seriesMemoryUsage ────────────────────────────────────────────────────────
1828
1929describe ( "seriesMemoryUsage" , ( ) => {
@@ -155,7 +165,7 @@ describe("seriesMemoryUsage", () => {
155165
156166describe ( "dataFrameMemoryUsage" , ( ) => {
157167 it ( "returns Series indexed by column names with Index entry" , ( ) => {
158- const df = new DataFrame ( {
168+ const df = dfFromSeries ( {
159169 a : new Series < number > ( { data : [ 1 , 2 , 3 ] , dtype : Dtype . int32 } ) ,
160170 b : new Series < number > ( { data : [ 4 , 5 , 6 ] , dtype : Dtype . float64 } ) ,
161171 } ) ;
@@ -167,15 +177,15 @@ describe("dataFrameMemoryUsage", () => {
167177 } ) ;
168178
169179 it ( "Index row = 24 bytes (RangeIndex)" , ( ) => {
170- const df = new DataFrame ( {
180+ const df = dfFromSeries ( {
171181 x : new Series < number > ( { data : [ 1 , 2 ] , dtype : Dtype . int64 } ) ,
172182 } ) ;
173183 const mu = dataFrameMemoryUsage ( df ) ;
174184 expect ( mu . at ( "Index" ) ) . toBe ( 24 ) ;
175185 } ) ;
176186
177187 it ( "column bytes = n × itemsize for fixed-width" , ( ) => {
178- const df = new DataFrame ( {
188+ const df = dfFromSeries ( {
179189 a : new Series < number > ( { data : [ 10 , 20 , 30 ] , dtype : Dtype . int32 } ) ,
180190 b : new Series < number > ( { data : [ 1.0 , 2.0 , 3.0 ] , dtype : Dtype . float64 } ) ,
181191 } ) ;
@@ -185,15 +195,15 @@ describe("dataFrameMemoryUsage", () => {
185195 } ) ;
186196
187197 it ( "string column = n × 8 bytes (pointers) when shallow" , ( ) => {
188- const df = new DataFrame ( {
198+ const df = dfFromSeries ( {
189199 s : new Series < Scalar > ( { data : [ "hello" , "world" ] , dtype : Dtype . string } ) ,
190200 } ) ;
191201 const mu = dataFrameMemoryUsage ( df ) ;
192202 expect ( mu . at ( "s" ) ) . toBe ( 2 * 8 ) ;
193203 } ) ;
194204
195205 it ( "index=false excludes 'Index' row" , ( ) => {
196- const df = new DataFrame ( {
206+ const df = dfFromSeries ( {
197207 a : new Series < number > ( { data : [ 1 , 2 ] , dtype : Dtype . int32 } ) ,
198208 } ) ;
199209 const mu = dataFrameMemoryUsage ( df , { index : false } ) ;
@@ -203,7 +213,7 @@ describe("dataFrameMemoryUsage", () => {
203213 } ) ;
204214
205215 it ( "deep=true string column reflects actual string sizes" , ( ) => {
206- const df = new DataFrame ( {
216+ const df = dfFromSeries ( {
207217 s : new Series < Scalar > ( { data : [ "hi" , "hello" ] , dtype : Dtype . string } ) ,
208218 } ) ;
209219 const mu = dataFrameMemoryUsage ( df , { deep : true , index : false } ) ;
@@ -212,12 +222,12 @@ describe("dataFrameMemoryUsage", () => {
212222 } ) ;
213223
214224 it ( "result Series name is 'memory_usage'" , ( ) => {
215- const df = new DataFrame ( { x : new Series < number > ( { data : [ 1 ] , dtype : Dtype . int64 } ) } ) ;
225+ const df = dfFromSeries ( { x : new Series < number > ( { data : [ 1 ] , dtype : Dtype . int64 } ) } ) ;
216226 expect ( dataFrameMemoryUsage ( df ) . name ) . toBe ( "memory_usage" ) ;
217227 } ) ;
218228
219229 it ( "total() matches sum of all column bytes (no index)" , ( ) => {
220- const df = new DataFrame ( {
230+ const df = dfFromSeries ( {
221231 a : new Series < number > ( { data : [ 1 , 2 , 3 , 4 ] , dtype : Dtype . int32 } ) ,
222232 b : new Series < number > ( { data : [ 1.0 , 2.0 , 3.0 , 4.0 ] , dtype : Dtype . float64 } ) ,
223233 } ) ;
@@ -227,7 +237,7 @@ describe("dataFrameMemoryUsage", () => {
227237 } ) ;
228238
229239 it ( "empty DataFrame returns only Index row" , ( ) => {
230- const df = new DataFrame ( { } ) ;
240+ const df = dfFromSeries ( { } ) ;
231241 const mu = dataFrameMemoryUsage ( df ) ;
232242 expect ( mu . index . size ) . toBe ( 1 ) ;
233243 expect ( mu . at ( "Index" ) ) . toBe ( 24 ) ;
@@ -245,7 +255,7 @@ describe("dataFrameMemoryUsage", () => {
245255 dtype : Dtype . int32 ,
246256 } ) ;
247257 } ) ;
248- const df = new DataFrame ( cols ) ;
258+ const df = dfFromSeries ( cols ) ;
249259 const mu = dataFrameMemoryUsage ( df ) ;
250260 return mu . values . every ( ( v ) => v >= 0 ) ;
251261 } ,
@@ -265,7 +275,7 @@ describe("dataFrameMemoryUsage", () => {
265275 dtype : Dtype . int32 ,
266276 } ) ;
267277 } ) ;
268- const df = new DataFrame ( cols ) ;
278+ const df = dfFromSeries ( cols ) ;
269279 const mu = dataFrameMemoryUsage ( df , { index : false } ) ;
270280 const expected = colSizes . reduce ( ( s , n ) => s + n * 4 , 0 ) ;
271281 return mu . sum ( ) === expected ;
0 commit comments