public void FbkContentElementCanOutputItselfAndItsVariablesAsAnArrayOfStrings()
        {
            var funContent =
                @"FUNCTION_BLOCK SampleFBK
                    VAR_INPUT
                        InputVariable0 : BOOL;
                    END_VAR
                    VAR_OUTPUT
                        OutputVariable: BOOL;
                    END_VAR
                    VAR
                        InternalVariable: TransferConveyorStateEnum;
                    END_VAR
                END_FUNCTION_BLOCK";

            var fbk = new Fbk(Fbk.FlattenDefinitionText(funContent));

            var fbkContentElement = new FbkContentElement(fbk);

            fbkContentElement.ToContent().Should().BeEquivalentTo(new string[]
            {
                "<--*****************SampleFBK Function Block Diagram*****************-->",
                $@"<Widget xsi:type=""widgets.brease.Label"" id=""Label_SampleFBK"" top=""0"" left=""200"" width=""240"" height=""60"" zIndex=""0"" text=""SampleFBK"" style=""FbkLabel"" />",
                $@"<Widget xsi:type=""widgets.brease.Label"" id=""Label_InputVariable0"" top=""0"" left=""0"" width=""200"" height=""60"" zIndex=""0"" text=""InputVariable0"" style=""VarLabelBoolFalse"" />",
                $@"<Widget xsi:type=""widgets.brease.Label"" id=""Label_OutputVariable"" top=""0"" left=""440"" width=""200"" height=""60"" zIndex=""0"" text=""OutputVariable"" style=""VarLabelBoolFalse"" />",
                $@"<Widget xsi:type=""widgets.brease.Label"" id=""Label_InternalVariable"" top=""60"" left=""220"" width=""200"" height=""60"" zIndex=""0"" text=""InternalVariable"" style=""VarLabelBoolFalse"" />",
                "<--******************************************************************-->"
            });
        }
        public void WeCanTurnAFbkIntoAContentElement()
        {
            var funContent =
                @"FUNCTION_BLOCK SampleFBK
                    VAR_INPUT
                        InputVariable0 : BOOL;
                        InputVariable1 : BOOL;
                        InputVariable2 : BOOL;
                    END_VAR
                    VAR_OUTPUT
                        OutputVariable: BOOL;
                    END_VAR
                    VAR
                        InternalVariable: TransferConveyorStateEnum;
                    END_VAR
                END_FUNCTION_BLOCK";

            var fbk = new Fbk(Fbk.FlattenDefinitionText(funContent));

            var fbkContentElement = new FbkContentElement(fbk);

            fbkContentElement.ElementString.Should()
            .Be(
                $@"<Widget xsi:type=""widgets.brease.Label"" id=""Label_SampleFBK"" top=""0"" left=""200"" width=""240"" height=""180"" zIndex=""0"" text=""SampleFBK"" style=""FbkLabel"" />");
        }
        public void FbkContentElementHasVariableElementsWithCorrectPlacement()
        {
            var funContent =
                @"FUNCTION_BLOCK SampleFBK
                    VAR_INPUT
                        InputVariable0 : BOOL;
                        InputVariable1 : BOOL;
                        InputVariable2 : BOOL;
                    END_VAR
                    VAR_OUTPUT
                        OutputVariable: BOOL;
                    END_VAR
                    VAR
                        InternalVariable: TransferConveyorStateEnum;
                    END_VAR
                END_FUNCTION_BLOCK";

            var fbk = new Fbk(Fbk.FlattenDefinitionText(funContent));

            var fbkContentElement = new FbkContentElement(fbk);

            //inputs
            fbkContentElement.VarContentElements[0].Name.Should().Be("InputVariable0");
            fbkContentElement.VarContentElements[0].Top.Should().Be(0);
            fbkContentElement.VarContentElements[0].Left.Should().Be(0);

            fbkContentElement.VarContentElements[1].Name.Should().Be("InputVariable1");
            fbkContentElement.VarContentElements[1].Top.Should().Be(FbkVarContentElement.VarLabelHeight);
            fbkContentElement.VarContentElements[1].Left.Should().Be(0);

            fbkContentElement.VarContentElements[2].Name.Should().Be("InputVariable2");
            fbkContentElement.VarContentElements[2].Top.Should().Be(FbkVarContentElement.VarLabelHeight * 2);
            fbkContentElement.VarContentElements[2].Left.Should().Be(0);

            //local
            fbkContentElement.VarContentElements[3].Name.Should().Be("OutputVariable");
            fbkContentElement.VarContentElements[3].Top.Should().Be(0);
            fbkContentElement.VarContentElements[3].Left.Should().Be(FbkVarContentElement.VarLabelWidth + FbkContentElement.FbkWidth);

            //outputs
            fbkContentElement.VarContentElements[4].Name.Should().Be("InternalVariable");
            fbkContentElement.VarContentElements[4].Top.Should().Be(fbkContentElement.Top + FbkVarContentElement.VarLabelHeight);
            fbkContentElement.VarContentElements[4].Left.Should().Be(FbkVarContentElement.VarLabelWidth + FbkContentElement.Padding);
        }