scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
67 lines (54 loc) • 1.57 kB
text/typescript
import {AbsData} from 'scriptable-abstract';
interface DataMockState {
buffer: Buffer;
}
const DEFAULT_STATE: DataMockState = {
buffer: Buffer.alloc(0),
};
export class MockData extends AbsData<DataMockState> {
constructor(input?: string | number[] | Buffer) {
super(DEFAULT_STATE);
let buffer: Buffer;
if (input instanceof Buffer) {
buffer = input;
} else if (Array.isArray(input)) {
buffer = Buffer.from(input);
} else if (typeof input === 'string') {
buffer = Buffer.from(input);
} else {
buffer = Buffer.alloc(0);
}
this.setState({buffer});
}
// Convert data to base64 encoded string
toBase64String(): string {
return this.state.buffer.toString('base64');
}
// Convert data to raw string
toRawString(): string {
return this.state.buffer.toString('utf8');
}
// Get bytes as number array
getBytes(): number[] {
return Array.from(this.state.buffer);
}
// Get the length of data in bytes
getLength(): number {
return this.state.buffer.length;
}
// Create Data from base64 string
static fromBase64String(base64String: string): Data {
const buffer = Buffer.from(base64String, 'base64');
return new MockData(buffer);
}
// Create Data from file at path
static fromFile(_filePath: string): Data {
// In mock environment, we'll return empty data
// Real implementation would read from file
return new MockData();
}
// Create Data from raw string
static fromString(string: string): Data {
return new MockData(string);
}
}