public void TestFactory() { var f = FactorySet.Instance(); var i = 0; f.Register(() => i++); f.Register(() => Guid.NewGuid()); f.Register <IJsonValueNode>(() => i % 2 == 0 ? new JsonObjectNode() : new JsonArrayNode()); Assert.AreEqual(0, f.Create <int>()); Assert.AreEqual(JsonValueKind.Array, f.Create <IJsonValueNode>().ValueKind); Assert.AreEqual(1, f.Create <int>()); Assert.IsNotNull(f.Create <Guid>()); Assert.AreEqual(JsonValueKind.Object, f.Create <IJsonValueNode>().ValueKind); Assert.IsNull(f.GetFactory <JsonObjectNode>()); Assert.IsNull(f.GetFactory <JsonArrayNode>()); Assert.IsNotNull(f.GetFactory <IJsonValueNode>()); var jsonFactory = new RoutedFactory <IJsonValueNode>(); jsonFactory.Register("obj", () => new JsonObjectNode()); jsonFactory.Register("arr", () => new JsonArrayNode()); var json = jsonFactory.Create("obj"); Assert.AreEqual(JsonValueKind.Object, json.ValueKind); Assert.AreEqual(JsonValueKind.Array, jsonFactory.Create("arr").ValueKind); Assert.AreNotEqual(json, jsonFactory.Create("obj").ValueKind); }
public void TestCreateGraph() { graph = new MemoryStorageGraph(); var factoryset = new FactorySet <IContainer>(); factoryset .Factories .Add( PolylineContainer.CreateFactory( new FactorySet <PolylineData>( PolylineData.FactoryInstance ), new ViewerSet <PolylineData>() ) ); file = new EditorFile(graph, factoryset); obj1 = graph.CreateObject(); obj2 = graph.CreateObject(); }
void InitContainers() { var controllers_factoryset = new FactorySet <ITrackController>( SheetMusicEditor.CreateFactory() ); var controllers_viewerset = new ViewerSet <ITrackController>( SheetMusicEditorView.Viewer.Instance ); var tracks_factoryset = new FactorySet <ITrack>( MusicTrackFactory.Instance ); var tracks_viewerset = new ViewerSet <ITrack>(); containerfactoryset.Factories.Add( TrackControllerContainer.CreateFactory( tracks_factoryset, tracks_viewerset, controllers_factoryset, controllers_viewerset ) ); containerfactoryset.Factories.Add( PolylineContainer.CreateFactory( new FactorySet <PolylineData>( PolylineData.FactoryInstance ), new ViewerSet <PolylineData>( ) ) ); containerfactoryset.Factories.Add( FunctionContainer.CreateFactory( new FunctionCodeTools( SquareFunction.FactoryClass.Instance, PolylineFunction.FactoryClass.Instance, PolynomialFunction.FactoryClass.Instance, PulseWidthModulatedFunction.FactoryClass.Instance, LocalPerspectiveFunction.FactoryClass.Instance, GlobalPerspectiveFunction.FactoryClass.Instance ), new FactorySet <FunctionSource>( FunctionSource.FactoryInstance ), new ViewerSet <FunctionSource>( ) ) ); containerfactoryset.Factories.Add( ScreenContainer.CreateFactory( new FactorySet <IScreen>( TrackControllerScreen.FactoryInstance ), new ViewerSet <IScreen>( TrackControllerScreenView.Viewer.Instance ) ) ); }