web-atoms-core
Version:
54 lines (36 loc) • 1.25 kB
text/typescript
import Assert from "@web-atoms/unit-test/dist/Assert";
import Category from "@web-atoms/unit-test/dist/Category";
import Test from "@web-atoms/unit-test/dist/Test";
import TestItem from "@web-atoms/unit-test/dist/TestItem";
import { App } from "../../App";
import { Inject } from "../../di/Inject";
import { ServiceCollection } from "../../di/ServiceCollection";
import { ServiceProvider } from "../../di/ServiceProvider";
class GlobalClass {
public id: number;
constructor() {
this.id = (new Date()).getTime();
}
}
class DependentService {
constructor(
public g: GlobalClass,
public sp: ServiceProvider
) {
}
}
("DI")
export class TestCase extends TestItem {
public singleton(): void {
const app = new App();
ServiceCollection.instance.registerSingleton(GlobalClass);
ServiceCollection.instance.registerSingleton(DependentService);
const g1 = app.get(GlobalClass);
const g2 = app.get(GlobalClass);
Assert.equals(g1, g2);
const ds = app.get(DependentService);
Assert.equals(ds.g, g1);
Assert.equals(ds.sp, app);
}
}