Example #1
0
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var component = virtualStudio.FindStudioComponentById(componentId);

            if (component is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Component with ID {componentId} not found.");
                return(false);
            }
            if (component is PlaceholderStudioComponent placeholderStudioComponent)
            {
                var input = placeholderStudioComponent.Inputs.FirstOrDefault(i => i.Id == endpointId);
                if (input is null)
                {
                    Error = new OperationError(ErrorType.NotFound, $"Input with ID {endpointId} not found on component with ID {componentId}.");
                    return(false);
                }
                placeholderStudioComponent.RemoveInput(input);
                return(true);
            }
            else
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"Component with ID {componentId} is not of type PlaceholderComponent.");
                return(false);
            }
        }
        public void TestInit()
        {
            var virtualStudio = new VirtualStudioWithArrangement();

            // Create a placeholder and add it to ComponentRepository and add a copy to the VirtualStudio's components.
            placeholderInRepository = new PlaceholderStudioComponent();
            placeholderInRepository.SetName("Placeholder 1");
            placeholderInRepository.AddInput("Input 1", Shared.DataKind.Audio, "WebRTC");
            placeholderInRepository.AddOutput("Output 1", Shared.DataKind.Audio, "WebRTC");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholderInRepository);
            placeholderInComponents = virtualStudio.AddComponent(placeholderInRepository);

            // Create a component mock and add it to ComponentRepository AND the VirtualStudio.
            client1Mock = new Mock <IStudioComponent>();
            client1Mock.Setup(m => m.SetId(It.IsAny <int>())).Callback <int>((value) => client1Id = value);
            client1Mock.SetupGet(m => m.Id).Returns(() => client1Id);
            virtualStudio.ComponentRepository.AddClient(client1Mock.Object);
            virtualStudio.AddComponent(client1Mock.Object);

            // Create a component mock and add it only to ComponentRepository.
            client2Mock = new Mock <IStudioComponent>();
            client2Mock.Setup(m => m.SetId(It.IsAny <int>())).Callback <int>((value) => client2Id = value);
            client2Mock.SetupGet(m => m.Id).Returns(() => client2Id);
            virtualStudio.ComponentRepository.AddClient(client2Mock.Object);

            this.virtualStudio = virtualStudio;

            operationHandlerMock        = new Mock <IVirtualStudioUpdateListener>();
            virtualStudioEventProcessor = new VirtualStudioEventProcessor(virtualStudio, virtualStudioName, operationHandlerMock.Object);
        }
        public void Init()
        {
            virtualStudio = new VirtualStudio();
            var placeholder = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            virtualStudio.AddComponent(placeholder);
        }
 public void Init()
 {
     virtualStudio           = new VirtualStudio();
     placeholderInRepository = new PlaceholderStudioComponent();
     placeholderInRepository.SetName("New Placeholder");
     placeholderInRepository.AddInput("Input 1", DataKind.Data, "hgdfhgoid");
     virtualStudio.ComponentRepository.AddPlaceholder(placeholderInRepository);
     placeholderInComponents = virtualStudio.AddComponent(placeholderInRepository) as PlaceholderStudioComponent;
 }
        public void Does_not_add_component_that_does_not_exist_in_ComponentRepository()
        {
            var virtualStudio = new VirtualStudio();
            var component     = new PlaceholderStudioComponent();

            var addedComponent = virtualStudio.AddComponent(component);

            Assert.IsNull(addedComponent);
            Assert.IsTrue(virtualStudio.Components.Count == 0);
        }
        public void Init()
        {
            virtualStudio = new VirtualStudio();
            var placeholderComponent = new PlaceholderStudioComponent();

            placeholderComponent.SetName("New Placeholder");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholderComponent);
            component           = virtualStudio.AddComponent(placeholderComponent);
            repositoryComponent = placeholderComponent;
        }
Example #7
0
        public void Creates_a_VirtualStudio_instance()
        {
            var    virtualStudioManager = new VirtualStudioRepository();
            string name = "testname";

            VirtualStudio virtualStudio = virtualStudioManager.GetVirtualStudio(name);

            Assert.IsNotNull(virtualStudio);
            Assert.IsTrue(virtualStudioManager.Count == 1);
        }
Example #8
0
        public async Task Init()
        {
            virtualStudio = new VirtualStudio();
            var placeholderComponent = new PlaceholderStudioComponent();

            placeholderComponent.SetName("New Placeholder");

            var addPlaceholderToRepositoryCommand = new AddPlaceholderToRepositoryCommand(placeholderComponent.ToDto());
            await addPlaceholderToRepositoryCommand.Process(virtualStudio);
        }
        public void Adds_component()
        {
            var virtualStudio = new VirtualStudio();
            var component     = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(component);

            virtualStudio.AddComponent(component);

            Assert.IsTrue(virtualStudio.Components.Count == 1);
        }
Example #10
0
        public void Returns_existing_VirtualStudio_instance()
        {
            var           virtualStudioManager = new VirtualStudioRepository();
            string        name          = "testname";
            VirtualStudio virtualStudio = virtualStudioManager.GetVirtualStudio(name);

            VirtualStudio existingVirtualStudio = virtualStudioManager.GetVirtualStudio(name);

            Assert.IsNotNull(existingVirtualStudio);
            Assert.AreEqual(virtualStudio, existingVirtualStudio);
        }
        public void Does_not_add_already_existing_component()
        {
            var virtualStudio = new VirtualStudio();
            var placeholder   = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            var component = virtualStudio.AddComponent(placeholder) as PlaceholderStudioComponent;

            virtualStudio.AddComponent(component);

            Assert.IsTrue(virtualStudio.Components.Count == 1);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var inputComponent = virtualStudio.Components.FirstOrDefault(c => c.Id == inputComponentId);

            if (inputComponent == null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Cannot find component with ID {inputComponentId}.");
                return(false);
            }
            var input = inputComponent.Inputs.FirstOrDefault(i => i.Id == inputId);

            if (input is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Cannot find input with ID {inputId} on component with ID {inputComponentId}.");
                return(false);
            }
            if (virtualStudio.Connections.FirstOrDefault(c => c.Input == input) != null)
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"Input with ID {inputId} on component with ID {inputComponentId} is already connected.");
                return(false);
            }
            var outputComponent = virtualStudio.Components.FirstOrDefault(c => c.Id == outputComponentId);

            if (outputComponent == null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Cannot find component with ID {outputComponentId}.");
                return(false);
            }
            var output = outputComponent.Outputs.FirstOrDefault(o => o.Id == outputId);

            if (output is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Cannot find output with ID {outputId} on component with ID {outputComponentId}.");
                return(false);
            }
            if ((input.DataKind & output.DataKind) == DataKind.Nothing)
            {
                Error = new OperationError(ErrorType.InvalidOperation, "DataKind of output and input does not match.");
                return(false);
            }
            if (output.ConnectionType != input.ConnectionType)
            {
                Error = new OperationError(ErrorType.InvalidOperation, "ConnectionType of output and input does not match.");
                return(false);
            }

            if (virtualStudio.CreateConnection(output, input) is null)
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"Cannot create connection for: Output {outputComponentId}:{outputId}, Input {inputComponentId}:{inputId}");
                return(false);
            }
            return(true);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var connection = virtualStudio.Connections.FirstOrDefault(c => c.Id == connectionId);

            if (connection is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Connection with ID {connectionId} not found.");
                return(false);
            }
            virtualStudio.RemoveConnection(connection);
            return(true);
        }
        public void Removes_component()
        {
            var virtualStudio = new VirtualStudio();
            var placeholder   = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            var component = virtualStudio.AddComponent(placeholder) as PlaceholderStudioComponent;

            virtualStudio.RemoveComponent(component);

            Assert.IsTrue(virtualStudio.Components.Count == 0);
        }
Example #15
0
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            IStudioComponent studioComponent = virtualStudio.Components.FirstOrDefault(c => c.Id == componentId);

            if (studioComponent is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Component with ID {componentId} not found.");
                return(false);
            }
            virtualStudio.RemoveComponent(studioComponent);
            return(true);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var component = virtualStudio.FindStudioComponentById(componentId);

            if (component is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Component with ID {componentId} not found.");
                return(false);
            }

            return(ChangeProperty(component, propertyName, value));
        }
Example #17
0
 public Task <VirtualStudioWithArrangementDto> Process(VirtualStudio virtualStudio)
 {
     if (virtualStudio is VirtualStudioWithArrangement virtualStudioWithArrangement)
     {
         var dto = virtualStudioWithArrangement.ToDto();
         return(Task.FromResult(dto));
     }
     else
     {
         Error = new OperationError(ErrorType.NotFound, "A VirtualStudioWithArrangement was not found.");
         return(Task.FromResult <VirtualStudioWithArrangementDto>(null));
     }
 }
        public void Invokes_event_when_a_component_gets_added()
        {
            var  virtualStudio   = new VirtualStudio();
            bool wasEventInvoked = false;

            virtualStudio.ComponentAdded += (_, component) => wasEventInvoked = true;
            var component = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(component);

            virtualStudio.AddComponent(component);

            Assert.IsTrue(wasEventInvoked);
        }
Example #19
0
 private bool ProcessSync(VirtualStudio virtualStudio)
 {
     if (virtualStudio is VirtualStudioWithArrangement studioArrangement)
     {
         ComponentNode node = studioArrangement.ComponentNodes.FirstOrDefault(c => c.Id == componentId);
         if (node is null)
         {
             Error = new OperationError(ErrorType.NotFound, $"ComponentNode with ID {componentId} not found.");
             return(false);
         }
         node.Position = new Position2D(x, y);
         return(true);
     }
     return(false);
 }
        public void Removes_connection()
        {
            var virtualStudio = new VirtualStudio();
            var placeholder   = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            var component = virtualStudio.AddComponent(placeholder) as PlaceholderStudioComponent;
            var input     = component.AddInput("input", DataKind.Audio, "ConnectionType");
            var output    = component.AddOutput("output", DataKind.Audio, "ConnectionType");
            IStudioConnection connection = virtualStudio.CreateConnection(output, input);

            virtualStudio.RemoveConnection(connection);

            Assert.IsTrue(virtualStudio.Connections.Count == 0);
        }
        public void Fires_event_when_a_component_gets_removed()
        {
            var virtualStudio = new VirtualStudio();
            var placeholder   = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            var  component       = virtualStudio.AddComponent(placeholder) as PlaceholderStudioComponent;
            var  input           = component.AddInput("input", DataKind.Audio, "ConnectionType");
            var  output          = component.AddOutput("output", DataKind.Audio, "ConnectionType");
            bool wasEventInvoked = false;

            virtualStudio.ComponentRemoved += (_, component) => wasEventInvoked = true;

            virtualStudio.RemoveComponent(component);

            Assert.IsTrue(wasEventInvoked);
        }
Example #22
0
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var placeholder = new PlaceholderStudioComponent();

            placeholder.SetName(component.Name);

            foreach (var input in component.Inputs)
            {
                placeholder.AddInput(input.Name, input.DataKind, input.ConnectionType);
            }
            foreach (var output in component.Outputs)
            {
                placeholder.AddOutput(output.Name, output.DataKind, output.ConnectionType);
            }

            return(virtualStudio.ComponentRepository.AddPlaceholder(placeholder));
        }
        public void Adds_connection_between_endpoints_that_exist_in_components()
        {
            var virtualStudio = new VirtualStudio();
            var placeholder   = new PlaceholderStudioComponent();

            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            var component = virtualStudio.AddComponent(placeholder) as PlaceholderStudioComponent;
            var input     = component.AddInput("input", DataKind.Audio, "ConnectionType");
            var output    = component.AddOutput("output", DataKind.Audio, "ConnectionType");

            Assert.IsTrue(virtualStudio.CanCreateConnection(output, input));

            IStudioConnection connection = virtualStudio.CreateConnection(output, input);

            Assert.IsNotNull(connection);
            Assert.IsTrue(virtualStudio.Connections.Count == 1);
        }
        public void Init()
        {
            virtualStudio = new VirtualStudio();

            var placeholder = new PlaceholderStudioComponent();

            placeholder.AddInput("Input 1", DataKind.Audio, "UDP");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithUdpAudioInput = virtualStudio.AddComponent(placeholder);

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddOutput("Output 1", DataKind.Audio, "UDP");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithUdpAudioOutput = virtualStudio.AddComponent(placeholder);

            connection = virtualStudio.CreateConnection(componentWithUdpAudioOutput.Outputs[0], componentWithUdpAudioInput.Inputs[0]);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var foundComponent = virtualStudio.ComponentRepository.Find(c => c.Id == componentId);

            if (foundComponent is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"StudioComponent with ID {componentId} not found in ComponentRepository.");
                return(false);
            }
            if (virtualStudio.Components.Contains(foundComponent))
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"The StudioComponent with ID {componentId} was already added.");
                return(false);
            }

            virtualStudio.AddComponent(foundComponent);
            return(true);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var connection = virtualStudio.Connections.FirstOrDefault(c => c.Id == connectionId);

            if (connection is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Connection with ID {connectionId} not found.");
                return(false);
            }

            if (connection.SetTargetState(state))
            {
                return(true);
            }
            else
            {
                Error = new OperationError(ErrorType.InvalidArgument, $"TargetState cannot be set to {state}.");
                return(false);
            }
        }
Example #27
0
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var component = virtualStudio.ComponentRepository.Placeholders.FirstOrDefault(p => p.Id == componentId);

            if (component is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"Placeholder with ID {componentId} not found.");
                return(false);
            }
            if (component is PlaceholderStudioComponent placeholder)
            {
                virtualStudio.ComponentRepository.RemovePlaceholder(placeholder);
                return(true);
            }
            else
            {
                Error = new OperationError(ErrorType.NotFound, $"Component with ID {componentId} is not of type PlaceholderComponent.");
                return(false);
            }
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            var component = virtualStudio.FindStudioComponentById(componentId);

            if (component is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"StudioComponent with ID {componentId} not found.");
                return(false);
            }
            if (component is PlaceholderStudioComponent placeholderComponent)
            {
                placeholderComponent.AddOutput(endpoint.Name, endpoint.DataKind, endpoint.ConnectionType);
                return(true);
            }
            else
            {
                Error = new OperationError(ErrorType.NotFound, $"StudioComponent with ID {component} is not a Placeholder.");
                return(false);
            }
        }
Example #29
0
        public void Init()
        {
            virtualStudio = new VirtualStudio();

            var placeholder = new PlaceholderStudioComponent();

            placeholder.AddInput("Input 1", DataKind.Audio, "UDP");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithUdpAudioInput             = virtualStudio.AddComponent(placeholder);
            componentWithUdpAudioInputInRepository = placeholder;

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddInput("Input 1", DataKind.Audio, "WebRtc");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithWebRtcAudioInput = virtualStudio.AddComponent(placeholder);

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddInput("Input 1", DataKind.Video, "WebRtc");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithWebRtcVideoInput = virtualStudio.AddComponent(placeholder);

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddOutput("Output 1", DataKind.Audio, "UDP");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithUdpAudioOutput = virtualStudio.AddComponent(placeholder);

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddOutput("Output 1", DataKind.Audio, "WebRtc");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithWebRtcAudioOutput = virtualStudio.AddComponent(placeholder);

            placeholder = new PlaceholderStudioComponent();
            placeholder.AddOutput("Output 1", DataKind.Video, "WebRtc");
            virtualStudio.ComponentRepository.AddPlaceholder(placeholder);
            componentWithWebRtcVideoOutput = virtualStudio.AddComponent(placeholder);
        }
        private bool ProcessSync(VirtualStudio virtualStudio)
        {
            if (!(virtualStudio is VirtualStudioWithArrangement virtualStudioWithArrangement))
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"Operation is not supported.");
                return(false);
            }

            var foundComponent = virtualStudioWithArrangement.ComponentRepository.Find(c => c.Id == componentId);

            if (foundComponent is null)
            {
                Error = new OperationError(ErrorType.NotFound, $"StudioComponent with ID {componentId} not found in ComponentRepository.");
                return(false);
            }
            if (virtualStudio.Components.Contains(foundComponent))
            {
                Error = new OperationError(ErrorType.InvalidOperation, $"The StudioComponent with ID {componentId} was already added.");
                return(false);
            }

            virtualStudioWithArrangement.AddComponent(foundComponent, new Position2D(x, y));
            return(true);
        }