├── .gitignore
├── LICENSE
├── README.md
├── docfx
├── .gitignore
├── .idea
│ └── .idea.docfx.dir
│ │ └── .idea
│ │ ├── .gitignore
│ │ ├── encodings.xml
│ │ ├── indexLayout.xml
│ │ └── vcs.xml
├── api
│ ├── .gitignore
│ └── index.md
├── articles
│ ├── Release Notes v2.0.md
│ ├── intro.md
│ └── toc.yml
├── docfx.json
├── index.md
└── toc.yml
├── docs
├── api
│ ├── L5Sharp.Catalog.CatalogEntry.html
│ ├── L5Sharp.Catalog.ModuleCatalog.html
│ ├── L5Sharp.Catalog.PortInfo.html
│ ├── L5Sharp.Catalog.html
│ ├── L5Sharp.Common.Address.html
│ ├── L5Sharp.Common.Dimensions.html
│ ├── L5Sharp.Common.NeutralText.html
│ ├── L5Sharp.Common.ProductType.html
│ ├── L5Sharp.Common.Revision.html
│ ├── L5Sharp.Common.ScanRate.html
│ ├── L5Sharp.Common.TagName.html
│ ├── L5Sharp.Common.TagNameComparer.html
│ ├── L5Sharp.Common.TaskPriority.html
│ ├── L5Sharp.Common.Vendor.html
│ ├── L5Sharp.Common.Watchdog.html
│ ├── L5Sharp.Common.html
│ ├── L5Sharp.Components.AddOnInstruction.html
│ ├── L5Sharp.Components.Controller.html
│ ├── L5Sharp.Components.DataType.html
│ ├── L5Sharp.Components.DataTypeMember.html
│ ├── L5Sharp.Components.LocalTag.html
│ ├── L5Sharp.Components.Module.html
│ ├── L5Sharp.Components.Parameter.html
│ ├── L5Sharp.Components.Pen.html
│ ├── L5Sharp.Components.Program.html
│ ├── L5Sharp.Components.Routine.html
│ ├── L5Sharp.Components.Tag.html
│ ├── L5Sharp.Components.Task.html
│ ├── L5Sharp.Components.Trend.html
│ ├── L5Sharp.Components.WatchList.html
│ ├── L5Sharp.Components.html
│ ├── L5Sharp.Core.Address.html
│ ├── L5Sharp.Core.Dimensions.html
│ ├── L5Sharp.Core.NeutralText.html
│ ├── L5Sharp.Core.ProductType.html
│ ├── L5Sharp.Core.Revision.html
│ ├── L5Sharp.Core.ScanRate.html
│ ├── L5Sharp.Core.TagName.html
│ ├── L5Sharp.Core.TagNameComparer.html
│ ├── L5Sharp.Core.TaskPriority.html
│ ├── L5Sharp.Core.Vendor.html
│ ├── L5Sharp.Core.Watchdog.html
│ ├── L5Sharp.Core.html
│ ├── L5Sharp.Elements.Communications.html
│ ├── L5Sharp.Elements.Connection.html
│ ├── L5Sharp.Elements.Line.html
│ ├── L5Sharp.Elements.ParameterConnection.html
│ ├── L5Sharp.Elements.Port.html
│ ├── L5Sharp.Elements.RedundancyInfo.html
│ ├── L5Sharp.Elements.Rung.html
│ ├── L5Sharp.Elements.SafetyInfo.html
│ ├── L5Sharp.Elements.Security.html
│ ├── L5Sharp.Elements.WatchTag.html
│ ├── L5Sharp.Elements.html
│ ├── L5Sharp.Enums.CaptureSizeType.html
│ ├── L5Sharp.Enums.ConnectionPriority.html
│ ├── L5Sharp.Enums.ConnectionType.html
│ ├── L5Sharp.Enums.DataFormat.html
│ ├── L5Sharp.Enums.DataTypeClass.html
│ ├── L5Sharp.Enums.DataTypeFamily.html
│ ├── L5Sharp.Enums.ElectronicKeying.html
│ ├── L5Sharp.Enums.ExternalAccess.html
│ ├── L5Sharp.Enums.Function.html
│ ├── L5Sharp.Enums.Instruction.html
│ ├── L5Sharp.Enums.ModuleCategory.html
│ ├── L5Sharp.Enums.OnlineEditType.html
│ ├── L5Sharp.Enums.Operator.html
│ ├── L5Sharp.Enums.PassThroughOption.html
│ ├── L5Sharp.Enums.PenType.html
│ ├── L5Sharp.Enums.ProductionTrigger.html
│ ├── L5Sharp.Enums.ProgramType.html
│ ├── L5Sharp.Enums.Radix.html
│ ├── L5Sharp.Enums.RoutineType.html
│ ├── L5Sharp.Enums.RungType.html
│ ├── L5Sharp.Enums.SFCExecutionControl.html
│ ├── L5Sharp.Enums.SFCLastScan.html
│ ├── L5Sharp.Enums.SFCRestartPosition.html
│ ├── L5Sharp.Enums.SamplesType.html
│ ├── L5Sharp.Enums.Scope.html
│ ├── L5Sharp.Enums.SheetOrientation.html
│ ├── L5Sharp.Enums.SheetSize.html
│ ├── L5Sharp.Enums.TagType.html
│ ├── L5Sharp.Enums.TagUsage.html
│ ├── L5Sharp.Enums.TaskEventTrigger.html
│ ├── L5Sharp.Enums.TaskType.html
│ ├── L5Sharp.Enums.TransmissionType.html
│ ├── L5Sharp.Enums.TriggerOperation.html
│ ├── L5Sharp.Enums.TriggerTargetType.html
│ ├── L5Sharp.Enums.TriggerType.html
│ ├── L5Sharp.Enums.Use.html
│ ├── L5Sharp.Enums.html
│ ├── L5Sharp.Extensions.Catalog.CatalogEntry.html
│ ├── L5Sharp.Extensions.Catalog.ModuleCatalog.html
│ ├── L5Sharp.Extensions.Catalog.PortInfo.html
│ ├── L5Sharp.Extensions.Catalog.html
│ ├── L5Sharp.Extensions.DataTypeExtensions.html
│ ├── L5Sharp.Extensions.InstructionExtensions.html
│ ├── L5Sharp.Extensions.LogixTypeExtensions.html
│ ├── L5Sharp.Extensions.ModuleExtensions.html
│ ├── L5Sharp.Extensions.NeutralTextExtensions.html
│ ├── L5Sharp.Extensions.RungExtensions.html
│ ├── L5Sharp.Extensions.TagDictionary.html
│ ├── L5Sharp.Extensions.TagExtensions.html
│ ├── L5Sharp.Extensions.html
│ ├── L5Sharp.ILogixSerializable.html
│ ├── L5Sharp.L5X.html
│ ├── L5Sharp.L5XException.html
│ ├── L5Sharp.L5XName.html
│ ├── L5Sharp.L5XParser.html
│ ├── L5Sharp.Logix.html
│ ├── L5Sharp.LogixComponent-1.html
│ ├── L5Sharp.LogixContainer-1.html
│ ├── L5Sharp.LogixContent.html
│ ├── L5Sharp.LogixData.html
│ ├── L5Sharp.LogixElement.html
│ ├── L5Sharp.LogixEnum-2.html
│ ├── L5Sharp.LogixExtensions.html
│ ├── L5Sharp.LogixMember.html
│ ├── L5Sharp.LogixSerializer.html
│ ├── L5Sharp.LogixType.html
│ ├── L5Sharp.ScanMode.html
│ ├── L5Sharp.Tests.Catalog.LogixCatalogTests.html
│ ├── L5Sharp.Tests.Catalog.html
│ ├── L5Sharp.Tests.Components.DataTypeMemberTests.html
│ ├── L5Sharp.Tests.Components.DataTypeTests.html
│ ├── L5Sharp.Tests.Components.ModuleTests.html
│ ├── L5Sharp.Tests.Components.ProgramTests.html
│ ├── L5Sharp.Tests.Components.RoutineTests.html
│ ├── L5Sharp.Tests.Components.TagTests.html
│ ├── L5Sharp.Tests.Components.TaskTests.html
│ ├── L5Sharp.Tests.Components.html
│ ├── L5Sharp.Tests.Core.AddressTests.html
│ ├── L5Sharp.Tests.Core.DimensionsTests.html
│ ├── L5Sharp.Tests.Core.NeutralTextTests.html
│ ├── L5Sharp.Tests.Core.PortTests.html
│ ├── L5Sharp.Tests.Core.ProductTypeTests.html
│ ├── L5Sharp.Tests.Core.RevisionTests.html
│ ├── L5Sharp.Tests.Core.ScanRateTests.html
│ ├── L5Sharp.Tests.Core.TagNameTests.html
│ ├── L5Sharp.Tests.Core.TaskPriorityTests.html
│ ├── L5Sharp.Tests.Core.VendorTests.html
│ ├── L5Sharp.Tests.Core.WatchdogTests.html
│ ├── L5Sharp.Tests.Core.html
│ ├── L5Sharp.Tests.Enums.ConnectionPriorityTests.html
│ ├── L5Sharp.Tests.Enums.ConnectionTypeTests.html
│ ├── L5Sharp.Tests.Enums.DataFormatTests.html
│ ├── L5Sharp.Tests.Enums.DataTypeClassTests.html
│ ├── L5Sharp.Tests.Enums.DataTypeFamilyTests.html
│ ├── L5Sharp.Tests.Enums.ExternalAccessTests.html
│ ├── L5Sharp.Tests.Enums.FunctionTests.html
│ ├── L5Sharp.Tests.Enums.InstructionTests.html
│ ├── L5Sharp.Tests.Enums.KeyingStateTests.html
│ ├── L5Sharp.Tests.Enums.ModuleTypeTests.html
│ ├── L5Sharp.Tests.Enums.OperationTests.html
│ ├── L5Sharp.Tests.Enums.ProductionTriggerTests.html
│ ├── L5Sharp.Tests.Enums.ProgramTypeTests.html
│ ├── L5Sharp.Tests.Enums.RadixAsciiTests.html
│ ├── L5Sharp.Tests.Enums.RadixBinaryTests.html
│ ├── L5Sharp.Tests.Enums.RadixDateTimeNsTests.html
│ ├── L5Sharp.Tests.Enums.RadixDateTimeTests.html
│ ├── L5Sharp.Tests.Enums.RadixDecimalTests.html
│ ├── L5Sharp.Tests.Enums.RadixExponentialTests.html
│ ├── L5Sharp.Tests.Enums.RadixFloatTests.html
│ ├── L5Sharp.Tests.Enums.RadixHexTests.html
│ ├── L5Sharp.Tests.Enums.RadixNullTests.html
│ ├── L5Sharp.Tests.Enums.RadixOctalTests.html
│ ├── L5Sharp.Tests.Enums.RadixTests.html
│ ├── L5Sharp.Tests.Enums.RoutineTypeTests.html
│ ├── L5Sharp.Tests.Enums.RungTypeTests.html
│ ├── L5Sharp.Tests.Enums.ScopeTests.html
│ ├── L5Sharp.Tests.Enums.TagTypeTests.html
│ ├── L5Sharp.Tests.Enums.TagUsageTests.html
│ ├── L5Sharp.Tests.Enums.TaskTriggerTests.html
│ ├── L5Sharp.Tests.Enums.TaskTypeTests.html
│ ├── L5Sharp.Tests.Enums.TransmissionTypeTests.html
│ ├── L5Sharp.Tests.Enums.UseTests.html
│ ├── L5Sharp.Tests.Enums.html
│ ├── L5Sharp.Tests.Examples.html
│ ├── L5Sharp.Tests.Known.html
│ ├── L5Sharp.Tests.LogixContentDataTypeTests.html
│ ├── L5Sharp.Tests.LogixContentExportTests.html
│ ├── L5Sharp.Tests.LogixContentMergeTests.html
│ ├── L5Sharp.Tests.LogixContentTagTests.html
│ ├── L5Sharp.Tests.LogixContentTasksTests.html
│ ├── L5Sharp.Tests.LogixContentTemplateTests.html
│ ├── L5Sharp.Tests.LogixDataTests.html
│ ├── L5Sharp.Tests.LogixMemberTests.html
│ ├── L5Sharp.Tests.LogixTests.html
│ ├── L5Sharp.Tests.ProofTests.html
│ ├── L5Sharp.Tests.Specimens.BoolGenerator.html
│ ├── L5Sharp.Tests.Specimens.DintGenerator.html
│ ├── L5Sharp.Tests.Specimens.IntGenerator.html
│ ├── L5Sharp.Tests.Specimens.LintGenerator.html
│ ├── L5Sharp.Tests.Specimens.RealGenerator.html
│ ├── L5Sharp.Tests.Specimens.SintGenerator.html
│ ├── L5Sharp.Tests.Specimens.UDintGenerator.html
│ ├── L5Sharp.Tests.Specimens.UIntGenerator.html
│ ├── L5Sharp.Tests.Specimens.ULintGenerator.html
│ ├── L5Sharp.Tests.Specimens.USintGenerator.html
│ ├── L5Sharp.Tests.Specimens.html
│ ├── L5Sharp.Tests.Types.ArrayTypeGenericTests.html
│ ├── L5Sharp.Tests.Types.ArrayTypeTests.html
│ ├── L5Sharp.Tests.Types.AtomicTests.html
│ ├── L5Sharp.Tests.Types.Atomics.BoolTests.html
│ ├── L5Sharp.Tests.Types.Atomics.DintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.IntTests.html
│ ├── L5Sharp.Tests.Types.Atomics.LintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.RealTests.html
│ ├── L5Sharp.Tests.Types.Atomics.SintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.UDintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.UIntTests.html
│ ├── L5Sharp.Tests.Types.Atomics.ULintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.USintTests.html
│ ├── L5Sharp.Tests.Types.Atomics.html
│ ├── L5Sharp.Tests.Types.ComplexTypeTests.html
│ ├── L5Sharp.Tests.Types.Custom.MyNestedType.html
│ ├── L5Sharp.Tests.Types.Custom.MyNestedTypeTests.html
│ ├── L5Sharp.Tests.Types.Custom.MySimpleType.html
│ ├── L5Sharp.Tests.Types.Custom.MySimpleTypeTests.html
│ ├── L5Sharp.Tests.Types.Custom.html
│ ├── L5Sharp.Tests.Types.Predefined.AlarmAnalogTest.html
│ ├── L5Sharp.Tests.Types.Predefined.AlarmDigitalTests.html
│ ├── L5Sharp.Tests.Types.Predefined.AlarmTests.html
│ ├── L5Sharp.Tests.Types.Predefined.ControlTests.html
│ ├── L5Sharp.Tests.Types.Predefined.CounterTests.html
│ ├── L5Sharp.Tests.Types.Predefined.MessageTests.html
│ ├── L5Sharp.Tests.Types.Predefined.StringTests.html
│ ├── L5Sharp.Tests.Types.Predefined.TimerTests.html
│ ├── L5Sharp.Tests.Types.Predefined.html
│ ├── L5Sharp.Tests.Types.StringTypeTests.html
│ ├── L5Sharp.Tests.Types.html
│ ├── L5Sharp.Tests.html
│ ├── L5Sharp.Types.ArrayType-1.html
│ ├── L5Sharp.Types.ArrayType.html
│ ├── L5Sharp.Types.Atomic.html
│ ├── L5Sharp.Types.AtomicType.html
│ ├── L5Sharp.Types.Atomics.BOOL.html
│ ├── L5Sharp.Types.Atomics.DINT.html
│ ├── L5Sharp.Types.Atomics.INT.html
│ ├── L5Sharp.Types.Atomics.LINT.html
│ ├── L5Sharp.Types.Atomics.LREAL.html
│ ├── L5Sharp.Types.Atomics.REAL.html
│ ├── L5Sharp.Types.Atomics.SINT.html
│ ├── L5Sharp.Types.Atomics.UDINT.html
│ ├── L5Sharp.Types.Atomics.UINT.html
│ ├── L5Sharp.Types.Atomics.ULINT.html
│ ├── L5Sharp.Types.Atomics.USINT.html
│ ├── L5Sharp.Types.Atomics.html
│ ├── L5Sharp.Types.ComplexType.html
│ ├── L5Sharp.Types.ModuleDefined.CHANNEL_AI_I.html
│ ├── L5Sharp.Types.ModuleDefined.html
│ ├── L5Sharp.Types.NullType.html
│ ├── L5Sharp.Types.Predefined.ALARM.html
│ ├── L5Sharp.Types.Predefined.ALARM_ANALOG.html
│ ├── L5Sharp.Types.Predefined.ALARM_DIGITAL.html
│ ├── L5Sharp.Types.Predefined.CONTROL.html
│ ├── L5Sharp.Types.Predefined.COUNTER.html
│ ├── L5Sharp.Types.Predefined.MESSAGE.html
│ ├── L5Sharp.Types.Predefined.PHASE.html
│ ├── L5Sharp.Types.Predefined.PID.html
│ ├── L5Sharp.Types.Predefined.STRING.html
│ ├── L5Sharp.Types.Predefined.TIMER.html
│ ├── L5Sharp.Types.Predefined.html
│ ├── L5Sharp.Types.StringType.html
│ ├── L5Sharp.Types.StructureType.html
│ ├── L5Sharp.Types.html
│ ├── L5Sharp.html
│ ├── index.html
│ ├── toc.html
│ └── toc.json
├── articles
│ ├── Release Notes v2.0.html
│ ├── intro.html
│ ├── toc.html
│ └── toc.json
├── favicon.ico
├── index.html
├── logo.svg
├── manifest.json
├── public
│ ├── bootstrap-icons-AJUF3K7A.woff2
│ ├── bootstrap-icons-QRR4WHQW.woff
│ ├── c4Diagram-9cddb37f-WIM3O2PZ.min.js
│ ├── c4Diagram-9cddb37f-WIM3O2PZ.min.js.map
│ ├── chunk-2UQKBPYM.min.js
│ ├── chunk-2UQKBPYM.min.js.map
│ ├── chunk-4QUVCJ43.min.js
│ ├── chunk-4QUVCJ43.min.js.map
│ ├── chunk-5D33ZLWF.min.js
│ ├── chunk-5D33ZLWF.min.js.map
│ ├── chunk-CCEUEXYU.min.js
│ ├── chunk-CCEUEXYU.min.js.map
│ ├── chunk-EJ5OGHAS.min.js
│ ├── chunk-EJ5OGHAS.min.js.map
│ ├── chunk-LT3ASRYW.min.js
│ ├── chunk-LT3ASRYW.min.js.map
│ ├── chunk-OL7Q2QRB.min.js
│ ├── chunk-OL7Q2QRB.min.js.map
│ ├── chunk-QE7DPUIN.min.js
│ ├── chunk-QE7DPUIN.min.js.map
│ ├── chunk-QSDWJHKZ.min.js
│ ├── chunk-QSDWJHKZ.min.js.map
│ ├── chunk-RDO2XUNR.min.js
│ ├── chunk-RDO2XUNR.min.js.map
│ ├── chunk-V67V7LTN.min.js
│ ├── chunk-V67V7LTN.min.js.map
│ ├── chunk-YBEN64OV.min.js
│ ├── chunk-YBEN64OV.min.js.map
│ ├── chunk-YFWH55TJ.min.js
│ ├── chunk-YFWH55TJ.min.js.map
│ ├── classDiagram-bc733c3b-ZOUC3QMI.min.js
│ ├── classDiagram-bc733c3b-ZOUC3QMI.min.js.map
│ ├── classDiagram-v2-8931bdaf-4M3HVNWR.min.js
│ ├── classDiagram-v2-8931bdaf-4M3HVNWR.min.js.map
│ ├── docfx.min.css
│ ├── docfx.min.css.map
│ ├── docfx.min.js
│ ├── docfx.min.js.map
│ ├── erDiagram-f6946109-WZMSETWO.min.js
│ ├── erDiagram-f6946109-WZMSETWO.min.js.map
│ ├── es-XWLYB2L6.min.js
│ ├── es-XWLYB2L6.min.js.map
│ ├── flowDiagram-93327f21-QBBFYOS3.min.js
│ ├── flowDiagram-93327f21-QBBFYOS3.min.js.map
│ ├── flowDiagram-v2-476db779-UMAI32QJ.min.js
│ ├── flowDiagram-v2-476db779-UMAI32QJ.min.js.map
│ ├── flowchart-elk-definition-5082a990-ILAKSSWI.min.js
│ ├── flowchart-elk-definition-5082a990-ILAKSSWI.min.js.map
│ ├── ganttDiagram-7ce12d6b-FKNSHKPL.min.js
│ ├── ganttDiagram-7ce12d6b-FKNSHKPL.min.js.map
│ ├── gitGraphDiagram-1e960c50-FRVWDVJI.min.js
│ ├── gitGraphDiagram-1e960c50-FRVWDVJI.min.js.map
│ ├── infoDiagram-264bed3e-EUZW63TP.min.js
│ ├── infoDiagram-264bed3e-EUZW63TP.min.js.map
│ ├── journeyDiagram-31be0096-3T7BZ4VA.min.js
│ ├── journeyDiagram-31be0096-3T7BZ4VA.min.js.map
│ ├── main.css
│ ├── main.js
│ ├── mermaid.core-GLNXVV4Q.min.js
│ ├── mermaid.core-GLNXVV4Q.min.js.map
│ ├── mindmap-definition-4fc2557c-LSYHS73U.min.js
│ ├── mindmap-definition-4fc2557c-LSYHS73U.min.js.map
│ ├── pieDiagram-157505fe-YFAHXN2T.min.js
│ ├── pieDiagram-157505fe-YFAHXN2T.min.js.map
│ ├── quadrantDiagram-fd70f2d0-GOM66O4O.min.js
│ ├── quadrantDiagram-fd70f2d0-GOM66O4O.min.js.map
│ ├── requirementDiagram-19c99588-JW7FAA4Q.min.js
│ ├── requirementDiagram-19c99588-JW7FAA4Q.min.js.map
│ ├── search-worker.min.js
│ ├── search-worker.min.js.map
│ ├── sequenceDiagram-5dfd0049-S5NMT534.min.js
│ ├── sequenceDiagram-5dfd0049-S5NMT534.min.js.map
│ ├── stateDiagram-133e3642-3YNW7YDK.min.js
│ ├── stateDiagram-133e3642-3YNW7YDK.min.js.map
│ ├── stateDiagram-v2-6371a76b-K36QD2HX.min.js
│ ├── stateDiagram-v2-6371a76b-K36QD2HX.min.js.map
│ ├── tex-svg-full-2UKKUQHI.min.js
│ ├── tex-svg-full-2UKKUQHI.min.js.map
│ ├── timeline-definition-5ed366f4-LPRDTIVS.min.js
│ └── timeline-definition-5ed366f4-LPRDTIVS.min.js.map
├── search-stopwords.json
├── toc.html
├── toc.json
└── xrefmap.yml
├── refs
├── Allen Bradley - Logic 5000 General Instructions.pdf
├── Logix 5000 Controllers Import Export.pdf
├── Logix5000_Controllers_ASCII_Strings.pdf
└── logix-tag-descriptions.pdf
├── src
├── .idea
│ └── .idea.L5Sharp
│ │ └── .idea
│ │ ├── .name
│ │ ├── encodings.xml
│ │ ├── indexLayout.xml
│ │ ├── projectSettingsUpdater.xml
│ │ ├── shelf
│ │ ├── Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM_[Changes]
│ │ │ └── shelved.patch
│ │ ├── Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM_[Changes]1
│ │ │ └── shelved.patch
│ │ └── Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM__Changes_.xml
│ │ └── vcs.xml
├── L5Sharp.Core
│ ├── Builders
│ │ ├── Scope
│ │ │ ├── IScopeBuilder.cs
│ │ │ ├── IScopeNameBuilder.cs
│ │ │ ├── IScopeProgramBuilder.cs
│ │ │ ├── IScopeRoutineBuilder.cs
│ │ │ ├── IScopeTypeBuilder.cs
│ │ │ └── ScopeBuilder.cs
│ │ └── Tag
│ │ │ ├── ITagAliasBuilder.cs
│ │ │ ├── ITagBaseAtomicArrayBuilder.cs
│ │ │ ├── ITagBaseAtomicBuilder.cs
│ │ │ ├── ITagBaseBuilder.cs
│ │ │ ├── ITagBaseStructureArrayBuilder.cs
│ │ │ ├── ITagBaseStructureBuilder.cs
│ │ │ ├── ITagBaseTypeBuilder.cs
│ │ │ ├── ITagBuilder.cs
│ │ │ ├── ITagConsumerBuilder.cs
│ │ │ ├── ITagMemberAtomicArrayBuilder.cs
│ │ │ ├── ITagMemberAtomicBuilder.cs
│ │ │ ├── ITagMemberStructureArrayBuilder.cs
│ │ │ ├── ITagMemberStructureBuilder.cs
│ │ │ ├── ITagMemberTypeBuilder.cs
│ │ │ ├── ITagProducerBuilder.cs
│ │ │ ├── TagAliasBuilder.cs
│ │ │ ├── TagBaseAtomicArrayBuilder.cs
│ │ │ ├── TagBaseAtomicBuilder.cs
│ │ │ ├── TagBaseBuilder.cs
│ │ │ ├── TagBaseStructureArrayBuilder.cs
│ │ │ ├── TagBaseStructureBuilder.cs
│ │ │ ├── TagBaseTypeBuilder.cs
│ │ │ ├── TagConsumerBuilder.cs
│ │ │ ├── TagMemberAtomicArrayBuilder.cs
│ │ │ ├── TagMemberAtomicBuilder.cs
│ │ │ ├── TagMemberStructureArrayBuilder.cs
│ │ │ ├── TagMemberStructureBuilder.cs
│ │ │ ├── TagMemberTypeBuilder.cs
│ │ │ └── TagProducerBuilder.cs
│ ├── Common
│ │ ├── Address.cs
│ │ ├── Argument.cs
│ │ ├── CrossReference.cs
│ │ ├── Dimensions.cs
│ │ ├── Instruction.cs
│ │ ├── NeutralText.cs
│ │ ├── ProductType.cs
│ │ ├── Revision.cs
│ │ ├── ScanRate.cs
│ │ ├── Scope.cs
│ │ ├── TagName.cs
│ │ ├── TaskPriority.cs
│ │ ├── Vendor.cs
│ │ └── Watchdog.cs
│ ├── Components
│ │ ├── AddOnInstruction.cs
│ │ ├── Controller.cs
│ │ ├── DataType.cs
│ │ ├── LocalTag.cs
│ │ ├── Module.cs
│ │ ├── Program.cs
│ │ ├── Routine.cs
│ │ ├── Tag.cs
│ │ ├── Task.cs
│ │ ├── Trend.cs
│ │ └── WatchList.cs
│ ├── Data
│ │ ├── ArrayData.cs
│ │ ├── AtomicData.cs
│ │ ├── Atomics
│ │ │ ├── BOOL.cs
│ │ │ ├── DINT.cs
│ │ │ ├── INT.cs
│ │ │ ├── LINT.cs
│ │ │ ├── LREAL.cs
│ │ │ ├── REAL.cs
│ │ │ ├── SINT.cs
│ │ │ ├── UDINT.cs
│ │ │ ├── UINT.cs
│ │ │ ├── ULINT.cs
│ │ │ └── USINT.cs
│ │ ├── ComplexData.cs
│ │ ├── Member.cs
│ │ ├── NullData.cs
│ │ ├── Predefined
│ │ │ ├── ALARM.cs
│ │ │ ├── ALARM_ANALOG.cs
│ │ │ ├── ALARM_DIGITAL.cs
│ │ │ ├── CONTROL.cs
│ │ │ ├── COUNTER.cs
│ │ │ ├── MESSAGE.cs
│ │ │ ├── PHASE.cs
│ │ │ ├── PID.cs
│ │ │ ├── STRING.cs
│ │ │ └── TIMER.cs
│ │ ├── StringData.cs
│ │ └── StructureData.cs
│ ├── Elements
│ │ ├── Block.cs
│ │ ├── Chart.cs
│ │ ├── Comment.cs
│ │ ├── Communications.cs
│ │ ├── Connection.cs
│ │ ├── ConsumeInfo.cs
│ │ ├── DataTypeMember.cs
│ │ ├── Diagram.cs
│ │ ├── DiagramElement.cs
│ │ ├── Line.cs
│ │ ├── Parameter.cs
│ │ ├── ParameterConnection.cs
│ │ ├── Pen.cs
│ │ ├── Port.cs
│ │ ├── ProduceInfo.cs
│ │ ├── RedundancyInfo.cs
│ │ ├── Rung.cs
│ │ ├── SafetyInfo.cs
│ │ ├── SafetyTagMap.cs
│ │ ├── Security.cs
│ │ ├── Sheet.cs
│ │ ├── TextBox.cs
│ │ ├── Unit.cs
│ │ ├── WatchTag.cs
│ │ └── Wire.cs
│ ├── Enums
│ │ ├── CaptureSizeType.cs
│ │ ├── ComponentClass.cs
│ │ ├── ConnectionPriority.cs
│ │ ├── ConnectionType.cs
│ │ ├── DataFormat.cs
│ │ ├── DataTypeClass.cs
│ │ ├── DataTypeFamily.cs
│ │ ├── ElectronicKeying.cs
│ │ ├── ExternalAccess.cs
│ │ ├── Keyword.cs
│ │ ├── MessageType.cs
│ │ ├── ModuleCategory.cs
│ │ ├── OnlineEditType.cs
│ │ ├── OpcUAAccess.cs
│ │ ├── Operator.cs
│ │ ├── PassThroughOption.cs
│ │ ├── PenType.cs
│ │ ├── ProductionTrigger.cs
│ │ ├── ProgramType.cs
│ │ ├── Radix.cs
│ │ ├── ReferenceType.cs
│ │ ├── RoutineType.cs
│ │ ├── RungType.cs
│ │ ├── SFCExecutionControl.cs
│ │ ├── SFCLastScan.cs
│ │ ├── SFCRestartPosition.cs
│ │ ├── SamplesType.cs
│ │ ├── ScopeLevel.cs
│ │ ├── ScopeType.cs
│ │ ├── SheetOrientation.cs
│ │ ├── SheetSize.cs
│ │ ├── TagType.cs
│ │ ├── TagUsage.cs
│ │ ├── TaskEventTrigger.cs
│ │ ├── TaskType.cs
│ │ ├── TokenType.cs
│ │ ├── TransmissionType.cs
│ │ ├── TriggerOperation.cs
│ │ ├── TriggerTargetType.cs
│ │ ├── TriggerType.cs
│ │ └── Use.cs
│ ├── ILogixLookup.cs
│ ├── ILogixParsable.cs
│ ├── ILogixSerializable.cs
│ ├── L5Sharp.Core.csproj
│ ├── L5Sharp.Core.csproj.DotSettings
│ ├── L5X.cs
│ ├── LogixCode.cs
│ ├── LogixComponent.cs
│ ├── LogixContainer.cs
│ ├── LogixData.cs
│ ├── LogixElement.cs
│ ├── LogixEnum.cs
│ ├── LogixIndex.cs
│ ├── LogixInfo.cs
│ ├── LogixLookup.cs
│ ├── LogixObject.cs
│ ├── LogixParser.cs
│ ├── LogixScoped.cs
│ ├── LogixSerializer.cs
│ └── Utilities
│ │ ├── Catalog
│ │ ├── CatalogEntry.cs
│ │ ├── ModuleCatalog.cs
│ │ └── PortInfo.cs
│ │ ├── L5XExtensions.cs
│ │ ├── L5XName.cs
│ │ ├── L5XScopeGenerator.cs
│ │ └── L5XTypeAttribute.cs
├── L5Sharp.Logix
│ ├── ACD.cs
│ └── L5Sharp.Logix.csproj
├── L5Sharp.sln
└── L5Sharp.sln.DotSettings
└── tests
├── L5Sharp.Benchmarks
├── L5Sharp.Benchmarks.csproj
├── NeutralTextBenchmarks.cs
└── Program.cs
├── L5Sharp.Console
├── L5Sharp.Console.csproj
├── Program.cs
└── TestClass.cs
├── L5Sharp.Samples
├── DataTypes
│ ├── AlarmType.L5X
│ ├── ArrayType.L5X
│ ├── BoolTest.L5X
│ ├── ComplexType.L5X
│ ├── InvalidType.L5X
│ ├── ModuleType.L5X
│ ├── MultipleDataTypes.L5X
│ ├── NestedType.L5X
│ ├── SimpleType.L5X
│ └── aoi_Test.L5X
├── Empty.L5X
├── Instructions
│ └── aoi_Test.L5X
├── Known.cs
├── L5Sharp.Samples.csproj
├── LotOfTags.L5X
├── Modules
│ ├── FlexBus.L5X
│ ├── Flex_Mod_1_Module.L5X
│ ├── Flex_Mod_8.L5X
│ ├── L1M1.L5X
│ ├── L1M1D1.L5X
│ ├── LM6C1.L5X
│ ├── Local_Mod_1.L5X
│ ├── Local_Mod_4.L5X
│ ├── Local_Mod_9.L5X
│ ├── RackIO.L5X
│ ├── Rack_Mod_2.L5X
│ ├── Rack_Mode_3.L5X
│ ├── TestCard.L5X
│ ├── TestEtap.L5X
│ └── TestImport.L5X
├── Programs
│ ├── Empty.L5X
│ ├── Main.L5X
│ └── TestProgram.L5X
├── Routines
│ ├── FBD.L5X
│ ├── Main.L5X
│ ├── SFC.L5X
│ └── ST.L5X
├── Rungs
│ ├── Message_Rung.L5X
│ ├── Rung0_from_Main.L5X
│ ├── Rung1_from_Main.L5X
│ └── Rung2_from_Main.L5X
├── Sample.cs
├── Test.ACD
├── Test.L5X
└── Trends
│ ├── Test.L5X
│ └── TriggerTrend.L5X
├── L5Sharp.Tests.Core
├── Common
│ ├── AddressTests.cs
│ ├── ArgumentTests.cs
│ ├── CrossReferenceTests.cs
│ ├── DimensionsTests.cs
│ ├── InstructionTests.cs
│ ├── NeutralTextTests.cs
│ ├── ProductTypeTests.cs
│ ├── RevisionTests.cs
│ ├── ScanRateTests.cs
│ ├── ScopeTests.cs
│ ├── TagNameTests.cs
│ ├── TaskPriorityTests.cs
│ ├── VendorTests.cs
│ └── WatchdogTests.cs
├── Components
│ ├── AddOnInstructionTests.Export_WhenCalled_ShouldBeVerified.verified.xml
│ ├── AddOnInstructionTests.New_Default_ShouldBeValid.verified.xml
│ ├── AddOnInstructionTests.Serialize_WithRungsAndTag_ShouldBeVerified.verified.xml
│ ├── AddOnInstructionTests.cs
│ ├── ControllerTests.Serialize_Overriden_ShouldBeVerified.verified.xml
│ ├── ControllerTests.cs
│ ├── CrossReferenceTests.cs
│ ├── DataTypeTests.Serialize_Default_ShouldBeVerified.verified.txt
│ ├── DataTypeTests.Serialize_Parameterized_ShouldBeVerified.verified.txt
│ ├── DataTypeTests.ToTag_ComplexType_ShouldBeVerified.verified.txt
│ ├── DataTypeTests.ToTag_SimpleType_ShouldBeVerified.verified.txt
│ ├── DataTypeTests.cs
│ ├── ModuleTests.Configure_ExistingValidCatalogNumber_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Create_CatalogNumberAndConfig_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Create_ExistingValidCatalogNumber_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Create_ValidNameAndCatalogNumber_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Local_ValidCatalogNumber_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Serialize_Default_ShouldBeVerified.verified.txt
│ ├── ModuleTests.Serialize_Initialized_ShouldBeVerified.verified.txt
│ ├── ModuleTests.cs
│ ├── ProgramTests.AddRoutine_ValidRoutine_ShouldBeVerified.verified.txt
│ ├── ProgramTests.AddTag_ValidTag_ShouldBeVerified.verified.txt
│ ├── ProgramTests.Duplicate_ValidConfig_ShouldBeVerified.verified.txt
│ ├── ProgramTests.Serialize_Initialized_ShouldBeVerified.verified.txt
│ ├── ProgramTests.cs
│ ├── RoutineTests.AddSheet_ValidSheetObject_ShouldWork.verified.txt
│ ├── RoutineTests.cs
│ ├── TagTests.Add_ComplexType_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_AtomicArrayWithSetValue_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_ComplexNestedStructure_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_SimpleAliasTag_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_SimpleStructureWithConfiguredMembers_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_StructureArrayWithNestedConfig_ShouldBeVerified.verified.txt
│ ├── TagTests.Build_StructureWithPredefinedMember_ShouldBeVerified.verified.txt
│ ├── TagTests.Class_SetValidValue_ShouldBeVerified.verified.xml
│ ├── TagTests.Comments_ValidCollection_ShouldBeVerified.verified.txt
│ ├── TagTests.ConsumeInfo_SetNewValue_ShouldBeVerified.verified.xml
│ ├── TagTests.Duplicate_ValidConfig_ShouldBeVerified.verified.txt
│ ├── TagTests.ProduceInfo_SetNewValue_ShouldBeVerified.verified.xml
│ ├── TagTests.Remove_ValidTag_ShouldBeVerified.verified.txt
│ ├── TagTests.SetDescription_OnMemberTag_ShouldCreateAndUpdateCommentsElement.verified.txt
│ ├── TagTests.SetDescription_OnRoot_ShouldUpdateRootDescriptionElement.verified.txt
│ ├── TagTests.SetValue_AnalogAlarm_ShouldBeVerified.verified.txt
│ ├── TagTests.SetValue_StaticMemberOfNestedType_ShouldBeVerifiedXml.verified.txt
│ ├── TagTests.SetValue_StaticMemberOfStructureType_ShouldBeVerifiedXml.verified.txt
│ ├── TagTests.cs
│ ├── TaskTests.AddProgram_ValidProgram_ShouldBeVerified.verified.xml
│ ├── TaskTests.Serialize_Default_ShouldBeVerified.verified.txt
│ ├── TaskTests.Serialize_Initialized_ShouldBeVerified.verified.txt
│ └── TaskTests.cs
├── Data
│ ├── ArrayDataTests.Serialize_ArrayOfNull_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_EmptyArray_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_SimpleOneDimensional_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_SimpleThreeDimensional_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_SimpleTwoDimensional_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_StringTypeArray_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.Serialize_StructureTypeArray_ShouldBeVerified.verified.txt
│ ├── ArrayDataTests.cs
│ ├── AtomicDataTests.cs
│ ├── Atomics
│ │ ├── BoolTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── BoolTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── BoolTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── BoolTests.cs
│ │ ├── DintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── DintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── DintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── DintTests.cs
│ │ ├── IntTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── IntTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── IntTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── IntTests.cs
│ │ ├── LintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── LintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── LintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── LintTests.cs
│ │ ├── LrealTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── LrealTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── LrealTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── LrealTests.cs
│ │ ├── RealTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── RealTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── RealTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── RealTests.cs
│ │ ├── SintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── SintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── SintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── SintTests.cs
│ │ ├── UDintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── UDintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── UDintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── UDintTests.cs
│ │ ├── UIntTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── UIntTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── UIntTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── UIntTests.cs
│ │ ├── ULintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── ULintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── ULintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ ├── ULintTests.cs
│ │ ├── USintTests.Serialize_Default_ShouldBeValid.verified.txt
│ │ ├── USintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt
│ │ ├── USintTests.Serialize_Value_ShouldBeValid.verified.txt
│ │ └── USintTests.cs
│ ├── ComplexDataTests.Serialize_Default_ShouldBeVerified.verified.txt
│ ├── ComplexDataTests.Serialize_Test_ShouldBeVerified.verified.txt
│ ├── ComplexDataTests.cs
│ ├── Custom
│ │ ├── MyNestedData.cs
│ │ ├── MyNestedTypeTests.SetSimpleM4_Valid_ShouldBeValid.verified.txt
│ │ ├── MyNestedTypeTests.cs
│ │ ├── MySimpleData.cs
│ │ ├── MySimpleTypeTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── MySimpleTypeTests.Serialize_UpdatedMember_ShouldBeVerified.verified.txt
│ │ └── MySimpleTypeTests.cs
│ ├── LogixDataTests.cs
│ ├── MemberTests.Serialize_ArrayOfAtomicDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.Serialize_ArrayOfStringDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.Serialize_ArrayOfStructureDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.Serialize_AtomicDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.Serialize_StringDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.Serialize_StructureDataType_ShouldBeVerified.verified.txt
│ ├── MemberTests.cs
│ ├── NullDataTests.SerializeShouldBeVerified.verified.txt
│ ├── NullDataTests.cs
│ ├── Predefined
│ │ ├── AlarmAnalogTest.Serialize_WhenCalled_ShouldBeVerified.verified.xml
│ │ ├── AlarmAnalogTest.SetMember_ValidType_ShouldBeVerified.verified.xml
│ │ ├── AlarmAnalogTest.cs
│ │ ├── AlarmDigitalTests.Serialize_WhenCalled_ShouldBeVerified.verified.txt
│ │ ├── AlarmDigitalTests.cs
│ │ ├── AlarmTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── AlarmTests.cs
│ │ ├── ControlTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── ControlTests.cs
│ │ ├── CounterTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── CounterTests.cs
│ │ ├── MessageTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── MessageTests.cs
│ │ ├── StringTests.cs
│ │ ├── TimerTests.Serialize_Default_ShouldBeVerified.verified.txt
│ │ ├── TimerTests.Serialize_Overload_ShouldBeVerified.verified.txt
│ │ └── TimerTests.cs
│ ├── StringDataTests.SerializeStructure_Default_ShouldBeVerified.verified.txt
│ ├── StringDataTests.SerializeStructure_WithValues_ShouldBeVerified.verified.txt
│ ├── StringDataTests.Serialize_Default_ShouldBeVerified.verified.txt
│ ├── StringDataTests.Serialize_WithValues_ShouldBeVerified.verified.txt
│ └── StringDataTests.cs
├── Elements
│ ├── BlockTests.New_Overriden_ShouldBeVerified.verified.txt
│ ├── BlockTests.cs
│ ├── CommentTests.SetValue_ValidValue_ShouldBeVerified.verified.txt
│ ├── CommentTests.cs
│ ├── ConnectionTests.New_Overridden_ShouldBeVerified.verified.txt
│ ├── ConnectionTests.cs
│ ├── DataTypeMemberTests.Serialize_WhenCalled_ShouldBeVerified.verified.txt
│ ├── DataTypeMemberTests.cs
│ ├── LineTests.cs
│ ├── ParameterTests.cs
│ ├── PortTests.cs
│ ├── RungTests.New_Default_ShouldBeVerified.verified.xml
│ ├── RungTests.New_TextOverload_ShouldBeVerified.verified.xml
│ ├── RungTests.SetCommentThenText_ShouldBeValid.verified.xml
│ ├── RungTests.SetComment_DefaultRung_ShouldBeValid.verified.xml
│ ├── RungTests.SetTextToNullThenCommentThenTextAgainShouldBeValid.verified.xml
│ ├── RungTests.cs
│ ├── SafetyInfoTests.New_Overriden_ShouldBeVerified.verified.xml
│ ├── SafetyInfoTests.cs
│ ├── SafetyTagMapTests.New_WithTags_ShouldBeVerified.verified.xml
│ ├── SafetyTagMapTests.cs
│ ├── SheetTests.Add_BlocksOutOfOrder_ShouldBeVerified.verified.txt
│ ├── SheetTests.InputConnectors_AddAfterConnector_ShouldBeVerified.verified.txt
│ ├── SheetTests.InputConnectors_AddValidConnector_ShouldBeVerified.verified.txt
│ ├── SheetTests.InputReferences_AddAfterFirstElement_ShouldBeVerified.verified.txt
│ ├── SheetTests.InputReferences_AddValidReference_ShouldBeVerified.verified.txt
│ ├── SheetTests.OutputReferences_AddAfterFirstElement_ShouldBeVerified.verified.txt
│ ├── SheetTests.OutputReferences_AddValidReference_ShouldBeVerified.verified.txt
│ ├── SheetTests.Wire_ValidOperands_ShouldBeVerified.verified.txt
│ ├── SheetTests.cs
│ └── WireTests.cs
├── Enums
│ ├── ConnectionPriorityTests.cs
│ ├── ConnectionTypeTests.cs
│ ├── DataFormatTests.cs
│ ├── DataTypeClassTests.cs
│ ├── DataTypeFamilyTests.cs
│ ├── ExternalAccessTests.cs
│ ├── KeyingStateTests.cs
│ ├── KeywordTests.cs
│ ├── ModuleTypeTests.cs
│ ├── OpcUAAccessTests.cs
│ ├── OperatorTests.cs
│ ├── ProductionTriggerTests.cs
│ ├── ProgramTypeTests.cs
│ ├── RadixAsciiTests.cs
│ ├── RadixBinaryTests.cs
│ ├── RadixDateTimeNsTests.cs
│ ├── RadixDateTimeTests.cs
│ ├── RadixDecimalTests.cs
│ ├── RadixExponentialTests.cs
│ ├── RadixFloatTests.cs
│ ├── RadixHexTests.cs
│ ├── RadixNullTests.cs
│ ├── RadixOctalTests.cs
│ ├── RadixTests.cs
│ ├── RoutineTypeTests.cs
│ ├── RungTypeTests.cs
│ ├── ScopeLevelTests.cs
│ ├── ScopeTypeTests.cs
│ ├── TagTypeTests.cs
│ ├── TagUsageTests.cs
│ ├── TaskTriggerTests.cs
│ ├── TaskTypeTests.cs
│ ├── TransmissionTypeTests.cs
│ └── UseTests.cs
├── Examples.cs
├── GlobalUsing.cs
├── L5Sharp.Tests.Core.csproj
├── L5XBasicTests.Add_ValidComponent_ShouldBeVerified.verified.xml
├── L5XBasicTests.New_ValidComponent_ShouldBeVerified.verified.xml
├── L5XBasicTests.New_ValidValues_ShouldBeVerified.verified.xml
├── L5XBasicTests.Serialize_WhenCalled_ShouldBeValid.verified.xml
├── L5XBasicTests.cs
├── L5XDataTypeTests.Add_ValidComponent_ShouldBeVerified.verified.txt
├── L5XDataTypeTests.RemoveAt_ValidIndex_ShouldBeVerified.verified.txt
├── L5XDataTypeTests.Update_ValidDelegateAndCondition_ShouldBeVerified.verified.txt
├── L5XDataTypeTests.Update_ValidDelegate_ShouldBeVerified.verified.txt
├── L5XDataTypeTests.cs
├── L5XReferenceTests.cs
├── L5XTagTests.SetValue_RackConnectionAliasTag_ShouldUpdateTheParentModuleTagElement.verified.txt
├── L5XTagTests.cs
├── L5XTasksTests.cs
├── LogixContainerTests.cs
├── LogixElementTests.AddAfter_AlternateType_ShouldBeVerified.verified.txt
├── LogixElementTests.AddAfter_ValidElement_ShouldBeVerified.verified.txt
├── LogixElementTests.AddBefore_AlternateType_ShouldBeVerified.verified.txt
├── LogixElementTests.AddBefore_ValidElement_ShouldBeVerified.verified.txt
├── LogixElementTests.Remove_HasParent_ShouldBeVerified.verified.txt
├── LogixElementTests.Replace_AlternateType_ShouldBeVerified.verified.txt
├── LogixElementTests.Replace_ValidElement_ShouldBeVerified.verified.txt
├── LogixElementTests.SetChildValue_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetChildValue_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetChildValue_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetComplex_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetComplex_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetComplex_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetContainer_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetContainer_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetContainer_NoValueCollectionWithElements_ShouldBeVerified.verified.txt
├── LogixElementTests.SetContainer_NoValueToEmptyCollection_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDateTime_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDateTime_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDateTime_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDescription_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDescription_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetDescription_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetProperty_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetProperty_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetProperty_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetRequiredValue_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetRequiredValue_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetSelectorValue_HasValueDifferentValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetSelectorValue_HasValueToNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetSelectorValue_NoValueToValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetValue_ToEmptyHasValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetValue_ToNullHasValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetValue_ToValueEmptyValue_ShouldBeVerified.verified.txt
├── LogixElementTests.SetValue_ToValueFromNull_ShouldBeVerified.verified.txt
├── LogixElementTests.SetValue_ToValueHasValue_ShouldBeVerified.verified.txt
├── LogixElementTests.cs
├── LogixEnumTests.cs
├── LogixIndexTests.cs
├── LogixLookupTests.cs
├── LogixParserTests.cs
├── ProofTesting.cs
├── Serialization
│ ├── AddOnInstructionSerializerTests.Serialize_BasicType_ShouldBeApproved.verified.xml
│ ├── AddOnInstructionSerializerTests.Serialize_OverloadedInstruction_ShouldBeApproved.verified.xml
│ ├── AddOnInstructionSerializerTests.cs
│ ├── AlarmAnalogDataSerializerTests.Serialize_ValidType_ShouldBeApproved.verified.txt
│ ├── AlarmAnalogDataSerializerTests.cs
│ ├── AlarmDataSerializerTests.Serialize_AlarmAnalog_ShouldBeApproved.verified.txt
│ ├── AlarmDataSerializerTests.Serialize_AlarmDigital_ShouldBeApproved.verified.txt
│ ├── AlarmDataSerializerTests.cs
│ ├── AlarmDigitalDataSerializerTests.Serialize_ValidType_ShouldBeApproved.verified.txt
│ ├── AlarmDigitalDataSerializerTests.cs
│ ├── ArrayMemberSerializerTests.Serialize_StructureTypeArray_ShouldBeApproved.verified.txt
│ ├── ArrayMemberSerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt
│ ├── ArrayMemberSerializerTests.cs
│ ├── ArraySerializerTests.Serialize_StructureTypeArray_ShouldBeApproved.verified.txt
│ ├── ArraySerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt
│ ├── ArraySerializerTests.cs
│ ├── ConnectionSerializerTests.Serialize_ValidComponent_ShouldBeApproved.verified.txt
│ ├── ConnectionSerializerTests.cs
│ ├── ControllerSerializerTests.Serialize_WhenCalled_ShouldNotBeApproved.verified.txt
│ ├── ControllerSerializerTests.cs
│ ├── DataTypeMemberSerializerTests.Serialize_AtomicArray_ShouldBeApproved.verified.txt
│ ├── DataTypeMemberSerializerTests.Serialize_Basic_ShouldBeApproved.verified.txt
│ ├── DataTypeMemberSerializerTests.Serialize_Complex_ShouldBeApproved.verified.txt
│ ├── DataTypeMemberSerializerTests.Serialize_OverLoaded_ShouldBeApproved.verified.txt
│ ├── DataTypeMemberSerializerTests.cs
│ ├── DataTypeSerializerTests.Serialize_AtomicType_ShouldBeApproved.verified.xml
│ ├── DataTypeSerializerTests.cs
│ ├── DataValueMemberSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.Serialize_Int_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.Serialize_Lint_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.Serialize_Real_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.Serialize_Sint_ShouldBeApproved.verified.txt
│ ├── DataValueMemberSerializerTests.cs
│ ├── DataValueSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.Serialize_Int_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.Serialize_Lint_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.Serialize_Real_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.Serialize_Sint_ShouldBeApproved.verified.txt
│ ├── DataValueSerializerTests.cs
│ ├── DecoratedDataSerializerTests.Serialize_CounterArray_ShouldBeApproved.verified.txt
│ ├── DecoratedDataSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt
│ ├── DecoratedDataSerializerTests.Serialize_EmptyStructure_ShouldBeApproved.verified.txt
│ ├── DecoratedDataSerializerTests.Serialize_RealArray_ShouldBeApproved.verified.txt
│ ├── DecoratedDataSerializerTests.Serialize_Timer_ShouldBeApproved.verified.txt
│ ├── DecoratedDataSerializerTests.cs
│ ├── FormattedDataSerializerTests.Serialize_AlarmType_ShouldBeApproved.verified.txt
│ ├── FormattedDataSerializerTests.Serialize_ComplexType_ShouldBeApproved.verified.txt
│ ├── FormattedDataSerializerTests.Serialize_StringType_ShouldBeApproved.verified.txt
│ ├── FormattedDataSerializerTests.cs
│ ├── LogixSerializerTests.cs
│ ├── ModuleSerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt
│ ├── ModuleSerializerTests.cs
│ ├── ParameterSerializerTests.Serialize_Basic_ShouldBeApproved.verified.txt
│ ├── ParameterSerializerTests.Serialize_OverLoaded_ShouldBeApproved.verified.txt
│ ├── ParameterSerializerTests.cs
│ ├── PortSerializerTests.Serialize_ValidComponentNoBus_ShouldBeApproved.verified.txt
│ ├── PortSerializerTests.Serialize_ValidComponent_ShouldBeApproved.verified.txt
│ ├── PortSerializerTests.cs
│ ├── ProgramSerializerTests.Serialize_BasicProgram_ShouldBeApproved.verified.txt
│ ├── ProgramSerializerTests.cs
│ ├── RungSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt
│ ├── RungSerializerTests.cs
│ ├── StructureMemberSerializerTests.SerializeArrayMembers_ShouldBeApproved.verified.txt
│ ├── StructureMemberSerializerTests.Serialize_DataValueValueMembers_ShouldBeApproved.verified.txt
│ ├── StructureMemberSerializerTests.Serialize_StructureMembers_ShouldBeApproved.verified.txt
│ ├── StructureMemberSerializerTests.cs
│ ├── StructureSerializerTests.SerializeArrayMembers_ShouldBeApproved.verified.txt
│ ├── StructureSerializerTests.Serialize_DataValueValueMembers_ShouldBeApproved.verified.txt
│ ├── StructureSerializerTests.Serialize_EmptyStructure_ShouldBeApproved.verified.txt
│ ├── StructureSerializerTests.Serialize_StructureMembers_ShouldBeApproved.verified.txt
│ ├── StructureSerializerTests.cs
│ ├── TagSerializerTests.Serialize_AlarmDigital_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleBoolArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleBool_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleDintArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleDint_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleIntArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleInt_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleLintArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleLint_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleRealArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleReal_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleSintArray_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_SimpleSint_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_String_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.Serialize_Timer_ShouldBeApproved.verified.txt
│ ├── TagSerializerTests.cs
│ ├── TaskSerializerTests.Serialize_ContinuousTask_ShouldBeApproved.verified.txt
│ ├── TaskSerializerTests.Serialize_EventTask_ShouldBeApproved.verified.txt
│ ├── TaskSerializerTests.Serialize_PeriodicTask_ShouldBeApproved.verified.txt
│ └── TaskSerializerTests.cs
├── Specimens
│ ├── BoolGenerator.cs
│ ├── DintGenerator.cs
│ ├── IntGenerator.cs
│ ├── LintGenerator.cs
│ ├── RealGenerator.cs
│ ├── SintGenerator.cs
│ ├── UDintGenerator.cs
│ ├── UIntGenerator.cs
│ ├── ULintGenerator.cs
│ └── USintGenerator.cs
└── Utilities
│ ├── L5XExtensionTests.cs
│ ├── LogixCatalogTests.cs
│ └── ParseTests.cs
└── L5Sharp.Tests.Logix
├── AcdTests.cs
└── L5Sharp.Tests.Logix.csproj
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Timothy Nunnink
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/docfx/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # folder #
3 | ###############
4 | /**/DROP/
5 | /**/TEMP/
6 | /**/packages/
7 | /**/bin/
8 | /**/obj/
9 |
10 |
--------------------------------------------------------------------------------
/docfx/.idea/.idea.docfx.dir/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Rider ignored files
5 | /modules.xml
6 | /contentModel.xml
7 | /.idea.docfx.iml
8 | /projectSettingsUpdater.xml
9 | # Editor-based HTTP Client requests
10 | /httpRequests/
11 | # Datasource local storage ignored files
12 | /dataSources/
13 | /dataSources.local.xml
14 |
--------------------------------------------------------------------------------
/docfx/.idea/.idea.docfx.dir/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/docfx/.idea/.idea.docfx.dir/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/docfx/.idea/.idea.docfx.dir/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docfx/api/.gitignore:
--------------------------------------------------------------------------------
1 | ###############
2 | # temp file #
3 | ###############
4 | *.yml
5 | .manifest
6 |
--------------------------------------------------------------------------------
/docfx/api/index.md:
--------------------------------------------------------------------------------
1 | # PLACEHOLDER
2 | TODO: Add .NET projects to the *src* folder and run `docfx` to generate **REAL** *API Documentation*!
3 |
--------------------------------------------------------------------------------
/docfx/articles/intro.md:
--------------------------------------------------------------------------------
1 | # Add your introductions here!
2 |
--------------------------------------------------------------------------------
/docfx/articles/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Introduction
2 | href: intro.md
3 | - name: Release Notes 2.0
4 | href: Release Notes v2.0.md
5 |
--------------------------------------------------------------------------------
/docfx/docfx.json:
--------------------------------------------------------------------------------
1 | {
2 | "metadata": [
3 | {
4 | "src": [
5 | {
6 | "files": ["**/**.csproj"],
7 | "src": "../src"
8 | }
9 | ],
10 | "dest": "api",
11 | "includePrivateMembers": false,
12 | "disableGitFeatures": false,
13 | "disableDefaultFilter": false,
14 | "noRestore": false,
15 | "namespaceLayout": "flattened",
16 | "memberLayout": "samePage",
17 | "allowCompilationErrors": false
18 | }
19 | ],
20 | "build": {
21 | "content": [
22 | {
23 | "files": [
24 | "api/**.yml",
25 | "api/index.md"
26 | ]
27 | },
28 | {
29 | "files": [
30 | "articles/**.md",
31 | "articles/**/toc.yml",
32 | "toc.yml",
33 | "*.md"
34 | ]
35 | }
36 | ],
37 | "resource": [
38 | {
39 | "files": [
40 | "images/**"
41 | ]
42 | }
43 | ],
44 | "output": "../docs",
45 | "globalMetadataFiles": [],
46 | "fileMetadataFiles": [],
47 | "template": [
48 | "default",
49 | "modern"
50 | ],
51 | "postProcessors": [],
52 | "keepFileLink": false,
53 | "disableGitFeatures": false
54 | }
55 | }
--------------------------------------------------------------------------------
/docfx/toc.yml:
--------------------------------------------------------------------------------
1 | - name: Articles
2 | href: articles/
3 | - name: Api
4 | href: api/
5 | homepage: api/index.md
6 |
--------------------------------------------------------------------------------
/docs/articles/toc.html:
--------------------------------------------------------------------------------
1 |
2 |
26 |
--------------------------------------------------------------------------------
/docs/articles/toc.json:
--------------------------------------------------------------------------------
1 |
2 | {"items":[{"name":"Introduction","href":"intro.html","topicHref":"intro.html"},{"name":"Release Notes 2.0","href":"Release%20Notes%20v2.0.html","topicHref":"Release%20Notes%20v2.0.html"}]}
3 |
--------------------------------------------------------------------------------
/docs/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/docs/favicon.ico
--------------------------------------------------------------------------------
/docs/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
26 |
--------------------------------------------------------------------------------
/docs/public/bootstrap-icons-AJUF3K7A.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/docs/public/bootstrap-icons-AJUF3K7A.woff2
--------------------------------------------------------------------------------
/docs/public/bootstrap-icons-QRR4WHQW.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/docs/public/bootstrap-icons-QRR4WHQW.woff
--------------------------------------------------------------------------------
/docs/public/chunk-CCEUEXYU.min.js:
--------------------------------------------------------------------------------
1 | var g=Object.create;var e=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(b,c)=>(typeof require<"u"?require:b)[c]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+a+'" is not supported')});var n=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports),o=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0})},l=(a,b,c,f)=>{if(b&&typeof b=="object"||typeof b=="function")for(let d of i(b))!k.call(a,d)&&d!==c&&e(a,d,{get:()=>b[d],enumerable:!(f=h(b,d))||f.enumerable});return a};var p=(a,b,c)=>(c=a!=null?g(j(a)):{},l(b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c,a));export{m as a,n as b,o as c,p as d};
2 | //# sourceMappingURL=chunk-CCEUEXYU.min.js.map
3 |
--------------------------------------------------------------------------------
/docs/public/chunk-CCEUEXYU.min.js.map:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "sources": [],
4 | "sourcesContent": [],
5 | "mappings": "",
6 | "names": []
7 | }
8 |
--------------------------------------------------------------------------------
/docs/public/flowDiagram-v2-476db779-UMAI32QJ.min.js:
--------------------------------------------------------------------------------
1 | import{a as i,b as e}from"./chunk-YFWH55TJ.min.js";import"./chunk-EJ5OGHAS.min.js";import{a as m,b as o}from"./chunk-RDO2XUNR.min.js";import"./chunk-4QUVCJ43.min.js";import"./chunk-LT3ASRYW.min.js";import"./chunk-OL7Q2QRB.min.js";import"./chunk-V67V7LTN.min.js";import"./chunk-QSDWJHKZ.min.js";import{b as a,c as s,ma as p,z as l}from"./chunk-5D33ZLWF.min.js";import{d as t}from"./chunk-CCEUEXYU.min.js";var g=t(a(),1),n=t(s(),1),c=t(l(),1);var y={parser:m,db:o,renderer:i,styles:e,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,p({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),i.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{y as diagram};
2 | //# sourceMappingURL=flowDiagram-v2-476db779-UMAI32QJ.min.js.map
3 |
--------------------------------------------------------------------------------
/docs/public/main.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/docs/public/main.css
--------------------------------------------------------------------------------
/docs/public/main.js:
--------------------------------------------------------------------------------
1 | export default {}
2 |
--------------------------------------------------------------------------------
/docs/public/mermaid.core-GLNXVV4Q.min.js:
--------------------------------------------------------------------------------
1 | import{Oa as p,b as r,c as t,z as m}from"./chunk-5D33ZLWF.min.js";import{d as o}from"./chunk-CCEUEXYU.min.js";var e=o(r(),1),f=o(t(),1);var l=o(m(),1);export{p as default};
2 | //# sourceMappingURL=mermaid.core-GLNXVV4Q.min.js.map
3 |
--------------------------------------------------------------------------------
/docs/public/mermaid.core-GLNXVV4Q.min.js.map:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "sources": ["../../node_modules/mermaid/dist/mermaid.core.mjs"],
4 | "sourcesContent": ["import \"ts-dedent\";\nimport { K } from \"./mermaid-b0ad2de1.js\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"d3\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nexport {\n K as default\n};\n"],
5 | "mappings": "8GAEA,IAAAA,EAAO,SACPC,EAAO,SAEP,IAAAC,EAAO",
6 | "names": ["import_dayjs", "import_sanitize_url", "import_dompurify"]
7 | }
8 |
--------------------------------------------------------------------------------
/docs/toc.html:
--------------------------------------------------------------------------------
1 |
2 |
26 |
--------------------------------------------------------------------------------
/docs/toc.json:
--------------------------------------------------------------------------------
1 |
2 | {"items":[{"name":"Articles","href":"articles/intro.html","tocHref":"articles/toc.html","topicHref":"articles/intro.html"},{"name":"Api","href":"api/index.html","tocHref":"api/toc.html","topicHref":"api/index.html","homepage":"api/index.html"}]}
3 |
--------------------------------------------------------------------------------
/refs/Allen Bradley - Logic 5000 General Instructions.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/refs/Allen Bradley - Logic 5000 General Instructions.pdf
--------------------------------------------------------------------------------
/refs/Logix 5000 Controllers Import Export.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/refs/Logix 5000 Controllers Import Export.pdf
--------------------------------------------------------------------------------
/refs/Logix5000_Controllers_ASCII_Strings.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/refs/Logix5000_Controllers_ASCII_Strings.pdf
--------------------------------------------------------------------------------
/refs/logix-tag-descriptions.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/refs/logix-tag-descriptions.pdf
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/.name:
--------------------------------------------------------------------------------
1 | L5Sharp
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ../docfx
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/projectSettingsUpdater.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/shelf/Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM_[Changes]1/shelved.patch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/src/.idea/.idea.L5Sharp/.idea/shelf/Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM_[Changes]1/shelved.patch
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/shelf/Uncommitted_changes_before_Checkout_at_3_27_2024_1_03_PM__Changes_.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/.idea/.idea.L5Sharp/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Scope/IScopeNameBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// A nested builder interface for specifying the target name of the a instance.
5 | ///
6 | public interface IScopeNameBuilder
7 | {
8 | ///
9 | /// Specifies the name (or number) of the target element in the scope instance.
10 | ///
11 | /// The name or number of the target element.
12 | /// The next step in the build fluent interface.
13 | Scope Named(string name);
14 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagAliasBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents a builder for configuring a tag as an alias in a Logix-based control system.
5 | /// Provides the ability to associate descriptive information with the alias tag during its configuration.
6 | ///
7 | public interface ITagAliasBuilder : ITagBuilder
8 | {
9 | ///
10 | /// Sets the description for the tag being built.
11 | ///
12 | /// The description text to associate with the tag.
13 | /// An updated instance of the to allow for method chaining.
14 | ITagBuilder WithDescription(string description);
15 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagBaseAtomicArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents a builder interface for creating and configuring atomic tag arrays in a Logix-based project.
5 | ///
6 | public interface ITagBaseAtomicArrayBuilder : ITagBaseBuilder>
7 | where TAtomic : AtomicData
8 | {
9 | ///
10 | /// Sets a specified value at a given index within the tag array.
11 | ///
12 | /// The zero-based index of the tag array where the value will be set.
13 | /// The value to assign at the specified index.
14 | /// An instance of for further configuration.
15 | ITagBaseAtomicArrayBuilder WithElement(int index, TAtomic value);
16 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagBaseAtomicBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents a builder for configuring and constructing atomic tags in a Logix environment.
5 | ///
6 | ///
7 | /// The type of atomic data for the tag to be built. Must inherit from and have a parameterless constructor.
8 | ///
9 | public interface ITagBaseAtomicBuilder : ITagBaseBuilder>
10 | where TAtomic : AtomicData, new()
11 | {
12 | ///
13 | /// Sets the value of the atomic tag being constructed.
14 | ///
15 | /// The value to be assigned to the tag. This must be of type .
16 | /// An instance of for further configuration.
17 | ITagBaseAtomicBuilder WithValue(TAtomic value);
18 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagBaseStructureArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | ///
6 | /// Represents a builder for configuring an array of tag elements within a Logix structure,
7 | /// supporting configuration of individual structures at specific indices.
8 | ///
9 | public interface ITagBaseStructureArrayBuilder : ITagBaseBuilder
10 | {
11 | ///
12 | /// Configures a structure at a specified index within the tag array, using the provided builder action.
13 | ///
14 | /// The zero-based index of the tag array where the structure will be configured.
15 | /// An action that provides a builder for defining the structure's members and properties.
16 | /// An instance of for further configuration.
17 | ITagBaseStructureArrayBuilder WithElement(int index, Action action);
18 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagBaseStructureBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents a builder interface for constructing tag base structures in a Logix environment.
5 | ///
6 | public interface ITagBaseStructureBuilder : ITagBaseBuilder
7 | {
8 | ///
9 | /// Adds a member to the tag structure with the specified name.
10 | ///
11 | /// The name of the member to add.
12 | /// A new interface to define the type of the added member.
13 | ITagMemberTypeBuilder AddMember(string name);
14 |
15 | ///
16 | /// Sets a specific value to a tag member with the given name.
17 | ///
18 | /// The name of the tag member to which the value will be assigned.
19 | /// The value to be assigned to the specified tag member.
20 | /// The current instance of the for method chaining.
21 | ITagBaseStructureBuilder WithValue(TagName name, LogixData value);
22 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents a builder interface for creating and configuring instances of .
5 | /// Provides methods to finalize the configuration and construct the resulting tag.
6 | ///
7 | public interface ITagBuilder
8 | {
9 | ///
10 | /// Finalizes the configuration of the builder and creates an instance of the class.
11 | ///
12 | /// An instance of the configured .
13 | Tag Build();
14 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagMemberAtomicArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Defines a builder interface for configuring tag member arrays, allowing for the assignment
5 | /// of values, structures, and descriptions within the array elements.
6 | ///
7 | public interface ITagMemberAtomicArrayBuilder where TAtomic : AtomicData
8 | {
9 | ///
10 | /// Assigns a value to the array element at the specified index.
11 | ///
12 | /// The zero-based index of the array element to which the value will be assigned.
13 | /// The value to be assigned to the specified array element.
14 | /// An instance of for further configuration.
15 | ITagMemberAtomicArrayBuilder WithElement(int index, TAtomic value);
16 |
17 | ///
18 | /// Assigns a description to the tag member array.
19 | ///
20 | /// The description to be applied to the tag member array.
21 | /// An instance of for further configuration.
22 | ITagMemberAtomicArrayBuilder WithDescription(string description);
23 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagMemberAtomicBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Defines a builder interface for configuring atomic tag members in a structured and fluent manner.
5 | ///
6 | /// The type of the atomic tag data being built.
7 | /// The type of the builder implementing this interface, enabling fluent configuration.
8 | public interface ITagMemberAtomicBuilder where TAtomic : AtomicData
9 | {
10 | ///
11 | /// Assigns a value to the current tag member being built.
12 | ///
13 | /// The value to set for the tag member.
14 | /// The current tag member atomic builder instance.
15 | TBuilder WithValue(TAtomic value);
16 |
17 | ///
18 | /// Sets the description for the current tag member being built.
19 | ///
20 | /// The description to assign to the tag member.
21 | /// The current tag member atomic builder instance.
22 | ITagMemberAtomicBuilder WithDescription(string description);
23 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagMemberStructureArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | ///
6 | /// Defines an interface for building and configuring a structure-based tag array member within a control system.
7 | ///
8 | public interface ITagMemberStructureArrayBuilder
9 | {
10 | ///
11 | /// Configures a structure at a specified index within the tag array, using the provided builder action.
12 | ///
13 | /// The zero-based index of the tag array where the structure will be configured.
14 | /// An action that provides a builder for defining the structure's members and properties.
15 | /// An instance of for further configuration.
16 | ITagMemberStructureArrayBuilder WithElement(int index, Action action);
17 |
18 | ///
19 | /// Assigns a description to the tag structure array, providing additional details or context.
20 | ///
21 | /// The description to be applied to the tag structure array.
22 | /// An instance of for continued configuration.
23 | ITagMemberStructureArrayBuilder WithDescription(string description);
24 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/ITagProducerBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Defines a builder for configuring and constructing a tag .
5 | ///
6 | public interface ITagProducerBuilder
7 | {
8 | ///
9 | /// Configures the builder with the specified maximum number of consumer connected tags.
10 | ///
11 | /// The maximum number of tags to be produced.
12 | /// An instance configured with the specified maximum count.
13 | ITagProducerBuilder WithMaxCount(int maximum);
14 |
15 | ///
16 | /// Configures the builder to enable the programmatic sending of event triggers for produced tags.
17 | ///
18 | /// An instance configured to enable programmatic event triggering.
19 | ITagProducerBuilder SendEventTrigger();
20 |
21 | ///
22 | /// Configures the builder to allow unicast communication for produced tags.
23 | ///
24 | /// An instance configured to permit unicast communication.
25 | ITagProducerBuilder Unicast();
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagAliasBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagAliasBuilder(Tag instance) : ITagAliasBuilder
4 | {
5 | public Tag Build()
6 | {
7 | return instance;
8 | }
9 |
10 | public ITagBuilder WithDescription(string description)
11 | {
12 | instance.Description = description;
13 | return this;
14 | }
15 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagBaseAtomicArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagBaseAtomicArrayBuilder(Tag instance)
4 | : TagBaseBuilder>(instance),
5 | ITagBaseAtomicArrayBuilder where TAtomic : AtomicData, new()
6 | {
7 | /*public ITagBaseArrayBuilder WithStructure(int index, Action action)
8 | {
9 | var element = instance[$"[{index}]"];
10 | var builder = new TagMemberStructureBuilder(element);
11 | action.Invoke(builder);
12 | return this;
13 | }*/
14 |
15 | public ITagBaseAtomicArrayBuilder WithElement(int index, TAtomic value)
16 | {
17 | Instance[$"[{index}]"].Value = value;
18 | return this;
19 | }
20 |
21 | protected override ITagBaseAtomicArrayBuilder GetBuilder()
22 | {
23 | return this;
24 | }
25 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagBaseAtomicBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagBaseAtomicBuilder(Tag instance) : TagBaseBuilder>(instance),
4 | ITagBaseAtomicBuilder where TAtomic : AtomicData, new()
5 | {
6 | public ITagBaseAtomicBuilder WithValue(TAtomic value)
7 | {
8 | Instance.Value = value;
9 | return this;
10 | }
11 |
12 | protected override ITagBaseAtomicBuilder GetBuilder()
13 | {
14 | return this;
15 | }
16 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagBaseStructureArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | internal class TagBaseStructureArrayBuilder(Tag instance)
6 | : TagBaseBuilder(instance), ITagBaseStructureArrayBuilder
7 | {
8 | public ITagBaseStructureArrayBuilder WithElement(int index, Action action)
9 | {
10 | var element = Instance[$"[{index}]"];
11 | var builder = new TagMemberStructureBuilder(element);
12 | action.Invoke(builder);
13 | return this;
14 | }
15 |
16 | protected override ITagBaseStructureArrayBuilder GetBuilder()
17 | {
18 | return this;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagBaseStructureBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagBaseStructureBuilder(Tag instance)
4 | : TagBaseBuilder(instance), ITagBaseStructureBuilder
5 | {
6 | public ITagMemberTypeBuilder AddMember(string name)
7 | {
8 | return new TagMemberTypeBuilder(Instance, name, this);
9 | }
10 |
11 | public ITagBaseStructureBuilder WithValue(TagName name, LogixData value)
12 | {
13 | Instance[name].Value = value;
14 | return this;
15 | }
16 |
17 | protected override ITagBaseStructureBuilder GetBuilder()
18 | {
19 | return this;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagMemberAtomicArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagMemberAtomicArrayBuilder(Tag member)
4 | : ITagMemberAtomicArrayBuilder where TAtomic : AtomicData
5 | {
6 | public ITagMemberAtomicArrayBuilder WithElement(int index, TAtomic value)
7 | {
8 | member[$"[{index}]"].Value = value;
9 | return this;
10 | }
11 |
12 | public ITagMemberAtomicArrayBuilder WithDescription(string description)
13 | {
14 | member.Description = description;
15 | return this;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagMemberAtomicBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagMemberAtomicBuilder(Tag member, TBuilder parent)
4 | : ITagMemberAtomicBuilder where TAtomic : AtomicData, new()
5 | {
6 | public TBuilder WithValue(TAtomic value)
7 | {
8 | member.Value = value;
9 | return parent;
10 | }
11 |
12 | public ITagMemberAtomicBuilder WithDescription(string description)
13 | {
14 | member.Description = description;
15 | return this;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagMemberStructureArrayBuilder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | internal class TagMemberStructureArrayBuilder(Tag member) : ITagMemberStructureArrayBuilder
6 | {
7 | public ITagMemberStructureArrayBuilder WithElement(int index, Action action)
8 | {
9 | var element = member[$"[{index}]"];
10 | var builder = new TagMemberStructureBuilder(element);
11 | action.Invoke(builder);
12 | return this;
13 | }
14 |
15 | public ITagMemberStructureArrayBuilder WithDescription(string description)
16 | {
17 | member.Description = description;
18 | return this;
19 | }
20 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagMemberStructureBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagMemberStructureBuilder(Tag member) : ITagMemberStructureBuilder
4 | {
5 | public ITagMemberTypeBuilder AddMember(string name)
6 | {
7 | return new TagMemberTypeBuilder(member, name, this);
8 | }
9 |
10 | public ITagMemberStructureBuilder WithValue(TagName name, LogixData value)
11 | {
12 | member[name].Value = value;
13 | return this;
14 | }
15 |
16 | public ITagMemberStructureBuilder WithDescription(string description)
17 | {
18 | member.Description = description;
19 | return this;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Builders/Tag/TagProducerBuilder.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | internal class TagProducerBuilder : ITagProducerBuilder
4 | {
5 | private int _maxCount = 1;
6 | private bool _sendEventTrigger;
7 | private bool _unicast;
8 |
9 | public ITagProducerBuilder WithMaxCount(int maximum)
10 | {
11 | _maxCount = maximum;
12 | return this;
13 | }
14 |
15 | public ITagProducerBuilder SendEventTrigger()
16 | {
17 | _sendEventTrigger = true;
18 | return this;
19 | }
20 |
21 | public ITagProducerBuilder Unicast()
22 | {
23 | _unicast = true;
24 | return this;
25 | }
26 |
27 | public ProduceInfo Build()
28 | {
29 | return new ProduceInfo
30 | {
31 | ProduceCount = _maxCount,
32 | ProgrammaticallySendEventTrigger = _sendEventTrigger,
33 | UnicastPermitted = _unicast
34 | };
35 | }
36 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Data/NullData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 |
4 | namespace L5Sharp.Core;
5 |
6 | ///
7 | /// Represents a null implementation, or a type that is neither atomic, structure, array,
8 | /// nor string.
9 | ///
10 | /// This would be the default for any tag that has no data type defined.
11 | public sealed class NullData : LogixData
12 | {
13 | private static readonly NullData Singleton = new();
14 |
15 | private NullData() : base(L5XName.Data)
16 | {
17 | }
18 |
19 | ///
20 | public override string Name => "NULL";
21 |
22 | ///
23 | public override IEnumerable Members => Enumerable.Empty();
24 |
25 | ///
26 | /// Gets the singleton instance of the logix type.
27 | ///
28 | public static readonly NullData Instance = Singleton;
29 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/CaptureSizeType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all for a Logix .
5 | ///
6 | public class CaptureSizeType : LogixEnum
7 | {
8 | private CaptureSizeType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Samples .
14 | ///
15 | public static readonly CaptureSizeType Samples = new(nameof(Samples), nameof(Samples));
16 |
17 | ///
18 | /// Represents a TimePeriod .
19 | ///
20 | public static readonly CaptureSizeType TimePeriod = new(nameof(TimePeriod), nameof(TimePeriod));
21 |
22 | ///
23 | /// Represents a NoLimit .
24 | ///
25 | public static readonly CaptureSizeType NoLimit = new(nameof(NoLimit), nameof(NoLimit));
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ComponentClass.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all for a various components.
5 | ///
6 | public class ComponentClass : LogixEnum
7 | {
8 | private ComponentClass(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Standard value.
14 | ///
15 | public static readonly ComponentClass Standard = new(nameof(Standard), nameof(Standard));
16 |
17 | ///
18 | /// Represents a Safety value.
19 | ///
20 | public static readonly ComponentClass Safety = new(nameof(Safety), nameof(Safety));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ConnectionPriority.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all for a Logix .
5 | ///
6 | public sealed class ConnectionPriority : LogixEnum
7 | {
8 | private ConnectionPriority(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Scheduled .
14 | ///
15 | public static readonly ConnectionPriority Scheduled = new(nameof(Scheduled), nameof(Scheduled));
16 |
17 | ///
18 | /// Represents a Low .
19 | ///
20 | public static readonly ConnectionPriority Low = new(nameof(Low), nameof(Low));
21 |
22 | ///
23 | /// Represents a High .
24 | ///
25 | public static readonly ConnectionPriority High = new(nameof(High), nameof(High));
26 |
27 | ///
28 | /// Represents a Urgent .
29 | ///
30 | public static readonly ConnectionPriority Urgent = new(nameof(Urgent), nameof(Urgent));
31 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/DataTypeFamily.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all Logix options for a given .
5 | /// Valid options are None and String.
6 | ///
7 | public sealed class DataTypeFamily : LogixEnum
8 | {
9 | private DataTypeFamily(string name, string value) : base(name, value)
10 | {
11 | }
12 |
13 | ///
14 | /// Represents no specific data type family.
15 | /// All objects except should have this option.
16 | ///
17 | public static readonly DataTypeFamily None = new(nameof(None), "NoFamily");
18 |
19 |
20 | ///
21 | /// Represents a string family. Only objects should have this option.
22 | ///
23 | public static readonly DataTypeFamily String = new(nameof(String), "StringFamily");
24 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ElectronicKeying.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all values for a given Logix
5 | ///
6 | public class ElectronicKeying : LogixEnum
7 | {
8 | private ElectronicKeying(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents the ExactMatch value.
14 | ///
15 | public static readonly ElectronicKeying ExactMatch = new(nameof(ExactMatch), nameof(ExactMatch));
16 |
17 | ///
18 | /// Represents the CompatibleModule value.
19 | ///
20 | public static readonly ElectronicKeying CompatibleModule = new(nameof(CompatibleModule), nameof(CompatibleModule));
21 |
22 | ///
23 | /// Represents the Disabled value.
24 | ///
25 | public static readonly ElectronicKeying Disabled = new(nameof(Disabled), nameof(Disabled));
26 |
27 | ///
28 | /// Represents the Custom value.
29 | ///
30 | public static readonly ElectronicKeying Custom = new(nameof(Custom), nameof(Custom));
31 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ExternalAccess.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all Logix options.
5 | ///
6 | /// is a Logix setting that determines the ability to read from or write to a given component.
7 | ///
8 | ///
9 | public sealed class ExternalAccess : LogixEnum
10 | {
11 | private ExternalAccess(string name, string value) : base(name, value)
12 | {
13 | }
14 |
15 | ///
16 | /// Represents no read or write .
17 | ///
18 | public static readonly ExternalAccess None = new(nameof(None), nameof(None));
19 |
20 | ///
21 | /// Represents read but not write .
22 | ///
23 | public static readonly ExternalAccess ReadOnly = new(nameof(ReadOnly), "Read Only");
24 |
25 | ///
26 | /// Represents read and write .
27 | ///
28 | public static readonly ExternalAccess ReadWrite = new(nameof(ReadWrite), "Read/Write");
29 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/OnlineEditType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class OnlineEditType : LogixEnum
7 | {
8 | private OnlineEditType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'Original' value.
14 | ///
15 | public static readonly OnlineEditType Original = new(nameof(Original), nameof(Original));
16 |
17 | ///
18 | /// Represents a 'PendingEdits' value.
19 | ///
20 | public static readonly OnlineEditType PendingEdits = new(nameof(PendingEdits), nameof(PendingEdits));
21 |
22 | ///
23 | /// Represents a 'TestEdits' value.
24 | ///
25 | public static readonly OnlineEditType TestEdits = new(nameof(TestEdits), nameof(TestEdits));
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/OpcUAAccess.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all Logix options.
5 | ///
6 | /// is a Logix setting that determines the ability to read from or write to a given component from OPC UA.
7 | ///
8 | ///
9 | public sealed class OpcUAAccess : LogixEnum
10 | {
11 | private OpcUAAccess(string name, string value) : base(name, value)
12 | {
13 | }
14 |
15 | ///
16 | /// Represents no read or write .
17 | ///
18 | public static readonly OpcUAAccess None = new(nameof(None), nameof(None));
19 |
20 | ///
21 | /// Represents read but not write .
22 | ///
23 | public static readonly OpcUAAccess ReadOnly = new(nameof(ReadOnly), "Read Only");
24 |
25 | ///
26 | /// Represents read and write .
27 | ///
28 | public static readonly OpcUAAccess ReadWrite = new(nameof(ReadWrite), "Read/Write");
29 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/PassThroughOption.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all for a Logix .
5 | ///
6 | public class PassThroughOption : LogixEnum
7 | {
8 | private PassThroughOption(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Disabled .
14 | ///
15 | public static readonly PassThroughOption Disabled = new(nameof(Disabled), nameof(Disabled));
16 |
17 | ///
18 | /// Represents a Enabled .
19 | ///
20 | public static readonly PassThroughOption Enabled = new(nameof(Enabled), nameof(Enabled));
21 |
22 | ///
23 | /// Represents a EnabledWithAppend .
24 | ///
25 | public static readonly PassThroughOption EnabledWithAppend =
26 | new(nameof(EnabledWithAppend), nameof(EnabledWithAppend));
27 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/PenType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class PenType : LogixEnum
7 | {
8 | private PenType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'Analog' value.
14 | ///
15 | public static readonly PenType Analog = new(nameof(Analog), nameof(Analog));
16 |
17 | ///
18 | /// Represents a 'Digital' value.
19 | ///
20 | public static readonly PenType Digital = new(nameof(Digital), nameof(Digital));
21 |
22 | ///
23 | /// Represents a 'Full-Width' value.
24 | ///
25 | public static readonly PenType FullWidth = new(nameof(FullWidth), "Full-Width");
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ProductionTrigger.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// An enumeration of all Logix options for a given .
5 | ///
6 | public class ProductionTrigger : LogixEnum
7 | {
8 | private ProductionTrigger(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Cyclic value.
14 | ///
15 | public static readonly ProductionTrigger Cyclic = new(nameof(Cyclic), nameof(Cyclic));
16 |
17 | ///
18 | /// Represents a COS value.
19 | ///
20 | public static readonly ProductionTrigger Cos = new(nameof(Cos), nameof(Cos));
21 |
22 | ///
23 | /// Represents a Application value.
24 | ///
25 | public static readonly ProductionTrigger Application = new(nameof(Application), nameof(Application));
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/ProgramType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Provides an enumeration of all Logix options or a given component.
5 | ///
6 | public class ProgramType : LogixEnum
7 | {
8 | private ProgramType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Normal value.
14 | ///
15 | public static readonly ProgramType Normal = new(nameof(Normal), nameof(Normal));
16 |
17 | ///
18 | /// Represents a EquipmentPhase value.
19 | ///
20 | public static readonly ProgramType EquipmentPhase = new(nameof(EquipmentPhase), nameof(EquipmentPhase));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/SFCExecutionControl.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public sealed class SFCExecutionControl : LogixEnum
7 | {
8 | private SFCExecutionControl(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'CurrentActive' value.
14 | ///
15 | public static readonly SFCExecutionControl CurrentActive = new(nameof(CurrentActive), nameof(CurrentActive));
16 |
17 | ///
18 | /// Represents a 'UntilFalse' value.
19 | ///
20 | public static readonly SFCExecutionControl UntilFalse = new(nameof(UntilFalse), nameof(UntilFalse));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/SFCLastScan.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public sealed class SFCLastScan : LogixEnum
7 | {
8 | private SFCLastScan(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'AutomaticReset' value.
14 | ///
15 | public static readonly SFCLastScan AutomaticReset = new(nameof(AutomaticReset), nameof(AutomaticReset));
16 |
17 | ///
18 | /// Represents a 'ProgrammaticReset' value.
19 | ///
20 | public static readonly SFCLastScan ProgrammaticReset = new(nameof(ProgrammaticReset), nameof(ProgrammaticReset));
21 |
22 | ///
23 | /// Represents a 'DontScan' value.
24 | ///
25 | public static readonly SFCLastScan DontScan = new(nameof(DontScan), nameof(DontScan));
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/SFCRestartPosition.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public sealed class SFCRestartPosition : LogixEnum
7 | {
8 | private SFCRestartPosition(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'MostRecent' value.
14 | ///
15 | public static readonly SFCRestartPosition MostRecent = new(nameof(MostRecent), nameof(MostRecent));
16 |
17 | ///
18 | /// Represents a 'InitialStep' value.
19 | ///
20 | public static readonly SFCRestartPosition InitialStep = new(nameof(InitialStep), nameof(InitialStep));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/SamplesType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class SamplesType : LogixEnum
7 | {
8 | private SamplesType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Samples value.
14 | ///
15 | public static readonly SamplesType Samples = new(nameof(Samples), "Samples");
16 |
17 | ///
18 | /// Represents a TimePeriod value.
19 | ///
20 | public static readonly SamplesType TimePeriod = new(nameof(TimePeriod), "Time Period");
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/SheetOrientation.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class SheetOrientation : LogixEnum
7 | {
8 | private SheetOrientation(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a 'Landscape' value.
14 | ///
15 | public static readonly SheetOrientation Landscape = new(nameof(Landscape), nameof(Landscape));
16 |
17 | ///
18 | /// Represents a 'Portrait' value.
19 | ///
20 | public static readonly SheetOrientation Portrait = new(nameof(Portrait), nameof(Portrait));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/TagType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of Logix options for a given .
5 | ///
6 | public class TagType : LogixEnum
7 | {
8 | private TagType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Base value.
14 | ///
15 | public static readonly TagType Base = new(nameof(Base), nameof(Base));
16 |
17 | ///
18 | /// Represents a Alias value.
19 | ///
20 | public static readonly TagType Alias = new(nameof(Alias), nameof(Alias));
21 |
22 | ///
23 | /// Represents a Produced value.
24 | ///
25 | public static readonly TagType Produced = new(nameof(Produced), nameof(Produced));
26 |
27 | ///
28 | /// Represents a Consumed value.
29 | ///
30 | public static readonly TagType Consumed = new(nameof(Consumed), nameof(Consumed));
31 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/TaskType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Provides an enumeration of all Logix Task types.
5 | /// Value must be , , or .
6 | ///
7 | public sealed class TaskType : LogixEnum
8 | {
9 | private TaskType(string name, string value) : base(name, value)
10 | {
11 | }
12 |
13 | ///
14 | /// Represents a Continuous , or a task that is configured to run continuously.
15 | ///
16 | public static readonly TaskType Continuous = new(nameof(Continuous), nameof(Continuous).ToUpper());
17 |
18 | ///
19 | /// Represents a Periodic , or a task that is configured to run at a specified rate.
20 | ///
21 | public static readonly TaskType Periodic = new(nameof(Periodic), nameof(Periodic).ToUpper());
22 |
23 | ///
24 | /// Represents an Event , or a task that is configured to run when a specified event occurs.
25 | ///
26 | public static readonly TaskType Event = new(nameof(Event), nameof(Event).ToUpper());
27 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/TransmissionType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public sealed class TransmissionType : LogixEnum
7 | {
8 | private TransmissionType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a Null value.
14 | ///
15 | public static readonly TransmissionType Null = new(nameof(Null), nameof(Null));
16 |
17 | ///
18 | /// Represents a Multicast value.
19 | ///
20 | public static readonly TransmissionType Multicast = new(nameof(Multicast), nameof(Multicast));
21 |
22 | ///
23 | /// Represents a Unicast value.
24 | ///
25 | public static readonly TransmissionType Unicast = new(nameof(Unicast), nameof(Unicast));
26 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/TriggerTargetType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class TriggerTargetType : LogixEnum
7 | {
8 | private TriggerTargetType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a TargetValue value.
14 | ///
15 | public static readonly TriggerTargetType TargetValue = new(nameof(TargetValue), nameof(TargetValue));
16 |
17 | ///
18 | /// Represents a TargetTag value.
19 | ///
20 | public static readonly TriggerTargetType TargetTag = new(nameof(TargetTag), nameof(TargetTag));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Enums/TriggerType.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an enumeration of all options for a given .
5 | ///
6 | public class TriggerType : LogixEnum
7 | {
8 | private TriggerType(string name, string value) : base(name, value)
9 | {
10 | }
11 |
12 | ///
13 | /// Represents a NoTrigger value.
14 | ///
15 | public static readonly TriggerType NoTrigger = new(nameof(NoTrigger), nameof(NoTrigger));
16 |
17 | ///
18 | /// Represents a EventTrigger value.
19 | ///
20 | public static readonly TriggerType EventTrigger = new(nameof(EventTrigger), nameof(EventTrigger));
21 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/ILogixParsable.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// Represents an interface that defines methods to parse string values into an object of type T.
5 | ///
6 | /// The type of object to parse the string value into.
7 | public interface ILogixParsable where T : ILogixParsable
8 | {
9 | //This is only available in newer versions of .NET, and we are supporting .NET standard 2.0. Classes still have to
10 | //implement this interface where applied to satisfy the newer version, but will technically be an empty marker
11 | //interface for older versions.
12 | #if NET7_0_OR_GREATER
13 | ///
14 | /// Parses the provided string into an instance of this type.
15 | ///
16 | /// The string to parse.
17 | /// A new instance of this type representing the parsed value.
18 | static abstract T Parse(string value);
19 |
20 | ///
21 | /// Tries to parse the provided string into an instance of this type.
22 | ///
23 | /// The string to parse.
24 | /// A new instance of this type representing the parsed value if successful; Otherwise, null.
25 | static abstract T? TryParse(string? value);
26 | #endif
27 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/ILogixSerializable.cs:
--------------------------------------------------------------------------------
1 | using System.Xml.Linq;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | ///
6 | /// An interface defining the method for serialization of an object to a .
7 | ///
8 | public interface ILogixSerializable
9 | {
10 | ///
11 | /// Returns a representing the serialized L5X data for a given object.
12 | ///
13 | /// A containing the XML data.
14 | XElement Serialize();
15 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Utilities/Catalog/PortInfo.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Core;
2 |
3 | ///
4 | /// A entity class representing the data returned from a module catalog entry.
5 | ///
6 | public class PortInfo
7 | {
8 | ///
9 | /// The unique identifying number of the port.
10 | ///
11 | ///
12 | /// All Modules have at least one port which defines how it connects to other peripherals or devices.
13 | /// Each port is identified by the number. Default value is 1.
14 | ///
15 | public int Number { get; set; } = 1;
16 |
17 | ///
18 | /// Gets the value that represents the port type.
19 | ///
20 | ///
21 | /// This value appears to be specific to the product. Ports with IP will have 'Network' for their type.
22 | ///
23 | public string Type { get; set; } = string.Empty;
24 |
25 | ///
26 | /// Gets a value indicating whether the port allows upstream connection, or if it is a downstream only port.
27 | ///
28 | public bool DownstreamOnly { get; set; }
29 | }
--------------------------------------------------------------------------------
/src/L5Sharp.Core/Utilities/L5XTypeAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace L5Sharp.Core;
4 |
5 | ///
6 | /// A custom attribute that defines the L5X type name for a logic type class in order to match XML
7 | /// elements to a given class. This attribute is mostly needed for class types whose names do not match the L5X element type
8 | /// found in the L5X, or for classes that support multiple L5X element types.
9 | ///
10 | [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
11 | public class L5XTypeAttribute : Attribute
12 | {
13 | ///
14 | /// Creates a new instance with type name.
15 | ///
16 | /// The L5X type name for the class.
17 | /// typeName is null.
18 | public L5XTypeAttribute(string typeName)
19 | {
20 | TypeName = typeName ?? throw new ArgumentNullException(nameof(typeName));
21 | }
22 |
23 | ///
24 | /// The L5X type name. This name corresponds to the name of the L5X/XML element, and is
25 | /// used to retrieve elements from an L5X file for the type.
26 | ///
27 | /// A representing the name of the element for the type. (e.g. DataType, Tag, etc.)
28 | public string TypeName { get; }
29 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Benchmarks/L5Sharp.Benchmarks.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | enable
6 | enable
7 | net7.0;net8.0
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Benchmarks/NeutralTextBenchmarks.cs:
--------------------------------------------------------------------------------
1 | using BenchmarkDotNet.Attributes;
2 | using L5Sharp.Core;
3 |
4 | namespace L5Sharp.Benchmarks;
5 |
6 | [MemoryDiagnoser]
7 | public class NeutralTextBenchmarks
8 | {
9 | private const string Sample =
10 | "GRT(SimpleInt,400)XIO(MultiDimensionalArray[1,3].3)CMP(ATN(_Test) > 1.0)[TON(TimerArray[0],?,?),OTU(TestComplexTag.SimpleMember.BoolMember)];";
11 |
12 | [Params(1000, 10000)]
13 | public int N;
14 |
15 | private NeutralText _text;
16 |
17 | [GlobalSetup]
18 | public void Setup()
19 | {
20 | _text = new NeutralText(Sample);
21 | }
22 |
23 | [Benchmark]
24 | public List Regex()
25 | {
26 | var instructions = new List();
27 |
28 | for (var i = 0; i < N; i++)
29 | {
30 | instructions.AddRange(_text.Instructions());
31 | }
32 |
33 | return instructions;
34 | }
35 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Benchmarks/Program.cs:
--------------------------------------------------------------------------------
1 | using BenchmarkDotNet.Running;
2 | using L5Sharp.Benchmarks;
3 |
4 | var summary = BenchmarkRunner.Run();
--------------------------------------------------------------------------------
/tests/L5Sharp.Console/L5Sharp.Console.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 | 12
7 | enable
8 | enable
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Console/Program.cs:
--------------------------------------------------------------------------------
1 | using L5Sharp.Console;
2 |
3 | while (Console.ReadLine() != "exit")
4 | {
5 | var test = new TestClass();
6 | await test.RunExample();
7 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Console/TestClass.cs:
--------------------------------------------------------------------------------
1 | using L5Sharp.Core;
2 | using L5Sharp.Samples;
3 | using Task = System.Threading.Tasks.Task;
4 |
5 | namespace L5Sharp.Console;
6 |
7 | public class TestClass
8 | {
9 | public async Task RunExample()
10 | {
11 | var content = await L5X.LoadAsync(Known.Example);
12 |
13 | var tags = content.Query().Where(t => t.TagName.Contains("Test"));
14 |
15 | foreach (var tag in tags)
16 | {
17 | if (tag.Description is not null)
18 | {
19 | System.Console.WriteLine($"{tag.TagName}: {tag.Description}");
20 | }
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/DataTypes/AlarmType.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/DataTypes/BoolTest.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/DataTypes/InvalidType.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/DataTypes/ModuleType.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Modules/Flex_Mod_8.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Modules/TestCard.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Rockwell Automation/Allen-Bradley1756-EN2T4325481
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Modules/TestEtap.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 | 1311771783-ETAP
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Modules/TestImport.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Programs/Empty.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Rungs/Message_Rung.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Test.ACD:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tnunnink/L5Sharp/528aafabc02edfcc5ae445f2dc6f3707a99492a5/tests/L5Sharp.Samples/Test.ACD
--------------------------------------------------------------------------------
/tests/L5Sharp.Samples/Trends/Test.L5X:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Common/CrossReferenceTests.cs:
--------------------------------------------------------------------------------
1 | namespace L5Sharp.Tests.Core.Common;
2 |
3 | [TestFixture]
4 | public class CrossReferenceTests
5 | {
6 | [Test]
7 | public void New_ValidElement_ShouldNotBeNull()
8 | {
9 | /*var reference = new CrossReference()*/
10 | }
11 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/AddOnInstructionTests.New_Default_ShouldBeValid.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Enable Input - System Defined Parameter
5 |
6 |
7 |
8 |
9 |
10 | Enable Output - System Defined Parameter
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/DataTypeTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/DataTypeTests.Serialize_Parameterized_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/DataTypeTests.ToTag_SimpleType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Configure_ExistingValidCatalogNumber_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Rockwell Automation/Allen-Bradley
16 | 1756-EN2T
17 | 4325481
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Create_CatalogNumberAndConfig_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Create_ExistingValidCatalogNumber_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Rockwell Automation/Allen-Bradley
16 | 1756-EN2T
17 | 4325481
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Create_ValidNameAndCatalogNumber_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Local_ValidCatalogNumber_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ModuleTests.Serialize_Initialized_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ProgramTests.AddRoutine_ValidRoutine_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ProgramTests.AddTag_ValidTag_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/ProgramTests.Serialize_Initialized_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Add_ComplexType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Build_AtomicArrayWithSetValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Build_SimpleAliasTag_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Build_SimpleStructureWithConfiguredMembers_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Build_StructureWithPredefinedMember_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Class_SetValidValue_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Comments_ValidCollection_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.ConsumeInfo_SetNewValue_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Duplicate_ValidConfig_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.ProduceInfo_SetNewValue_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.Remove_ValidTag_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.SetDescription_OnMemberTag_ShouldCreateAndUpdateCommentsElement.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.SetDescription_OnRoot_ShouldUpdateRootDescriptionElement.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.SetValue_AnalogAlarm_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TagTests.SetValue_StaticMemberOfStructureType_ShouldBeVerifiedXml.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TaskTests.AddProgram_ValidProgram_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TaskTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Components/TaskTests.Serialize_Initialized_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_ArrayOfNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_EmptyArray_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_SimpleOneDimensional_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_SimpleThreeDimensional_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_SimpleTwoDimensional_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ArrayDataTests.Serialize_StringTypeArray_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/BoolTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/BoolTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/BoolTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/DintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/DintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/DintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/IntTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/IntTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/IntTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LrealTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LrealTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/LrealTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/RealTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/RealTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/RealTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/SintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/SintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/SintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UDintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UDintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UDintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UIntTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UIntTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/UIntTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/ULintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/ULintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/ULintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/USintTests.Serialize_Default_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/USintTests.Serialize_ValueAndRadix_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Atomics/USintTests.Serialize_Value_ShouldBeValid.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ComplexDataTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/ComplexDataTests.Serialize_Test_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Custom/MySimpleData.cs:
--------------------------------------------------------------------------------
1 | using System.Xml.Linq;
2 |
3 | namespace L5Sharp.Tests.Core.Data.Custom;
4 |
5 | public class MySimpleData : ComplexData
6 | {
7 | public MySimpleData() : base(nameof(MySimpleData))
8 | {
9 | M1 = new BOOL();
10 | M2 = new SINT();
11 | M3 = new INT();
12 | M4 = new DINT();
13 | M5 = new LINT();
14 | M6 = new REAL();
15 | }
16 |
17 | public MySimpleData(XElement element) : base(element)
18 | {
19 | }
20 |
21 | public BOOL M1
22 | {
23 | get => GetMember();
24 | set => SetMember(value);
25 | }
26 |
27 | public SINT M2
28 | {
29 | get => GetMember();
30 | set => SetMember(value);
31 | }
32 |
33 | public INT M3
34 | {
35 | get => GetMember();
36 | set => SetMember(value);
37 | }
38 |
39 | public DINT M4
40 | {
41 | get => GetMember();
42 | set => SetMember(value);
43 | }
44 |
45 | public LINT M5
46 | {
47 | get => GetMember();
48 | set => SetMember(value);
49 | }
50 |
51 | public REAL M6
52 | {
53 | get => GetMember();
54 | set => SetMember(value);
55 | }
56 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Custom/MySimpleTypeTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Custom/MySimpleTypeTests.Serialize_UpdatedMember_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/MemberTests.Serialize_ArrayOfAtomicDataType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/MemberTests.Serialize_ArrayOfStringDataType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/MemberTests.Serialize_AtomicDataType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/MemberTests.Serialize_StringDataType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/MemberTests.Serialize_StructureDataType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/NullDataTests.SerializeShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/NullDataTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Data;
4 |
5 | [TestFixture]
6 | public class NullDataTests
7 | {
8 | [Test]
9 | public void HasExpectedValues()
10 | {
11 | var type = NullData.Instance;
12 |
13 | type.Name.Should().Be("NULL");
14 | type.Members.Should().BeEmpty();
15 | }
16 |
17 | [Test]
18 | public Task SerializeShouldBeVerified()
19 | {
20 | var type = NullData.Instance;
21 |
22 | var xml = type.Serialize().ToString();
23 |
24 | return Verify(xml);
25 | }
26 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/AlarmAnalogTest.Serialize_WhenCalled_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/AlarmAnalogTest.SetMember_ValidType_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/AlarmDigitalTests.Serialize_WhenCalled_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/ControlTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/CounterTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/MessageTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/TimerTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/Predefined/TimerTests.Serialize_Overload_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/StringDataTests.SerializeStructure_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/StringDataTests.SerializeStructure_WithValues_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/StringDataTests.Serialize_Default_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Data/StringDataTests.Serialize_WithValues_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/BlockTests.New_Overriden_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/CommentTests.SetValue_ValidValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/DataTypeMemberTests.Serialize_WhenCalled_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/ParameterTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Elements;
4 |
5 | [TestFixture]
6 | public class ParameterTests
7 | {
8 | [Test]
9 | public void ToMember_InputAtomicParameter_ShouldBeExpected()
10 | {
11 | var parameter = new Parameter("Test", new DINT(123));
12 |
13 | var member = parameter.ToMember();
14 |
15 | member.Name.Should().Be("Test");
16 | member.Value.Should().Be(new INT(123));
17 | }
18 |
19 | [Test]
20 | public void ToTag_ValidName_ShouldBeExpected()
21 | {
22 | var parameter = new Parameter
23 | {
24 | Name = "Test",
25 | DataType = "MyDataType"
26 | };
27 |
28 | var tag = parameter.ToTag("MyParameterTag");
29 |
30 | tag.Should().NotBeNull();
31 | tag.Name.Should().Be("MyParameterTag");
32 | tag.DataType.Should().Be("MyDataType");
33 | tag.Value.Should().BeOfType();
34 | }
35 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/PortTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Elements
4 | {
5 | [TestFixture]
6 | public class PortTests
7 | {
8 | [Test]
9 | public void New_Default_ShouldNotBeNull()
10 | {
11 | var port = new Port();
12 |
13 | port.Should().NotBeNull();
14 | }
15 |
16 | [Test]
17 | public void New_Default_ShouldHaveExpected()
18 | {
19 | var port = new Port();
20 |
21 | port.Id.Should().Be(0);
22 | port.Type.Should().Be(string.Empty);
23 | port.Upstream.Should().BeFalse();
24 | port.Address.Should().BeNull();
25 | port.BusSize.Should().BeNull();
26 | }
27 |
28 | [Test]
29 | public void New_WithValues_ShouldHaveExpectedProperties()
30 | {
31 | var port = new Port
32 | {
33 | Id = 1,
34 | Type = "ICP",
35 | Address = "0",
36 | Upstream = true,
37 | BusSize = 17
38 | };
39 |
40 | port.Id.Should().Be(1);
41 | port.Type.Should().Be("ICP");
42 | port.Upstream.Should().BeTrue();
43 | port.Address.Should().Be(new Address("0"));
44 | port.BusSize.Should().Be(17);
45 | }
46 | }
47 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/RungTests.New_Default_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/RungTests.New_TextOverload_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | XIC(MyTag)[OTE(SomeOutput)TMR(TimerTag,?,?)];
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/RungTests.SetCommentThenText_ShouldBeValid.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | This is a test comment
3 | AFI;
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/RungTests.SetComment_DefaultRung_ShouldBeValid.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | This is a test comment
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/RungTests.SetTextToNullThenCommentThenTextAgainShouldBeValid.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | This is a test comment
3 | AFI;
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SafetyInfoTests.New_Overriden_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | Test_Tag_01,Test_Tag_02,Test_Tag_03
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SafetyInfoTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Elements;
4 |
5 | [TestFixture]
6 | public class SafetyInfoTests
7 | {
8 | [Test]
9 | public void New_Default_ShouldHaveExpectedValues()
10 | {
11 | var info = new SafetyInfo();
12 |
13 | info.SafetyLocked.Should().BeFalse();
14 | info.SafetySignature.Should().BeNull();
15 | info.SafetyLockPassword.Should().BeNull();
16 | info.SafetyUnlockPassword.Should().BeNull();
17 | info.SignatureRunModeProtect.Should().BeFalse();
18 | info.ConfigureSafetyIOAlways.Should().BeFalse();
19 | info.SafetyTagMap.Should().BeEmpty();
20 | }
21 |
22 | [Test]
23 | public Task New_Overriden_ShouldBeVerified()
24 | {
25 | var info = new SafetyInfo
26 | {
27 | SafetyLocked = true,
28 | SafetySignature = "!@#$ASDF123",
29 | SignatureRunModeProtect = true,
30 | ConfigureSafetyIOAlways = true,
31 | SafetyLockPassword = "Test",
32 | SafetyUnlockPassword = "Test",
33 | SafetyTagMap = new SafetyTagMap()
34 | {
35 | "Test_Tag_01",
36 | "Test_Tag_02",
37 | "Test_Tag_03",
38 | }
39 | };
40 |
41 | return VerifyXml(info.Serialize().ToString());
42 | }
43 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SafetyTagMapTests.New_WithTags_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 | TestTag1,TestTag2,TestTag3
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SafetyTagMapTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Elements;
4 |
5 | [TestFixture]
6 | public class SafetyTagMapTests
7 | {
8 | [Test]
9 | public void New_Default_ShouldNotBeNull()
10 | {
11 | var map = new SafetyTagMap();
12 |
13 | map.Should().NotBeNull();
14 | }
15 |
16 | [Test]
17 | public Task New_WithTags_ShouldBeVerified()
18 | {
19 | var map = new SafetyTagMap();
20 |
21 | map.Add("TestTag1");
22 | map.Add("TestTag2");
23 | map.Add("TestTag3");
24 |
25 | return VerifyXml(map.Serialize().ToString());
26 | }
27 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.Add_BlocksOutOfOrder_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.InputConnectors_AddAfterConnector_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.InputConnectors_AddValidConnector_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.InputReferences_AddAfterFirstElement_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.InputReferences_AddValidReference_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.OutputReferences_AddAfterFirstElement_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.OutputReferences_AddValidReference_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Elements/SheetTests.Wire_ValidOperands_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ConnectionPriorityTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class ConnectionPriorityTests
8 | {
9 | [Test]
10 | public void Low_WhenCalled_ShouldNotBeNull()
11 | {
12 | ConnectionPriority.Low.Should().NotBeNull();
13 | }
14 |
15 | [Test]
16 | public void High_WhenCalled_ShouldNotBeNull()
17 | {
18 | ConnectionPriority.High.Should().NotBeNull();
19 | }
20 |
21 | [Test]
22 | public void Scheduled_WhenCalled_ShouldNotBeNull()
23 | {
24 | ConnectionPriority.Scheduled.Should().NotBeNull();
25 | }
26 |
27 | [Test]
28 | public void Urgent_WhenCalled_ShouldNotBeNull()
29 | {
30 | ConnectionPriority.Urgent.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/DataFormatTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class DataFormatTests
8 | {
9 | [Test]
10 | public void New_Decorated_ShouldNotBeNullAndHaveExpectedValue()
11 | {
12 | var format = DataFormat.Decorated;
13 |
14 | format.Should().NotBeNull();
15 | format.Name.Should().Be("Decorated");
16 | }
17 |
18 |
19 | [Test]
20 | public void New_String_ShouldNotBeNullAndHaveExpectedValue()
21 | {
22 | var format = DataFormat.String;
23 |
24 | format.Should().NotBeNull();
25 | format.Name.Should().Be("String");
26 | }
27 |
28 |
29 | [Test]
30 | public void New_Alarm_ShouldNotBeNullAndHaveExpectedValue()
31 | {
32 | var format = DataFormat.Alarm;
33 |
34 | format.Should().NotBeNull();
35 | format.Name.Should().Be("Alarm");
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/DataTypeClassTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class DataTypeClassTests
8 | {
9 | [Test]
10 | public void New_User_ShouldNotBeNull()
11 | {
12 | var sut = DataTypeClass.User;
13 |
14 | sut.Should().NotBeNull();
15 | }
16 |
17 | [Test]
18 | public void New_Io_ShouldNotBeNull()
19 | {
20 | var sut = DataTypeClass.Module;
21 |
22 | sut.Should().NotBeNull();
23 | }
24 |
25 | [Test]
26 | public void New_Predefined_ShouldNotBeNull()
27 | {
28 | var sut = DataTypeClass.Predefined;
29 |
30 | sut.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/DataTypeFamilyTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class DataTypeFamilyTests
8 | {
9 | [Test]
10 | public void None_WhenCalled_ShouldNotBeNull()
11 | {
12 | DataTypeFamily.None.Should().NotBeNull();
13 | DataTypeFamily.None.Name.Should().Be("None");
14 | DataTypeFamily.None.Value.Should().Be("NoFamily");
15 | }
16 |
17 | [Test]
18 | public void String_WhenCalled_ShouldNotBeNull()
19 | {
20 | DataTypeFamily.String.Should().NotBeNull();
21 | DataTypeFamily.String.Name.Should().Be("String");
22 | DataTypeFamily.String.Value.Should().Be("StringFamily");
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ExternalAccessTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Enums
4 | {
5 | [TestFixture]
6 | public class ExternalAccessTests
7 | {
8 | [Test]
9 | public void None_WhenCalled_ShouldNotBeNull()
10 | {
11 | ExternalAccess.None.Should().NotBeNull();
12 | }
13 |
14 | [Test]
15 | public void ReadOnly_WhenCalled_ShouldNotBeNull()
16 | {
17 | ExternalAccess.ReadOnly.Should().NotBeNull();
18 | }
19 |
20 | [Test]
21 | public void ReadWrite_WhenCalled_ShouldNotBeNull()
22 | {
23 | ExternalAccess.ReadWrite.Should().NotBeNull();
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/KeyingStateTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class KeyingStateTests
8 | {
9 | [Test]
10 | public void ExactMatch_WhenCalled_ShouldNotBeNull()
11 | {
12 | ElectronicKeying.ExactMatch.Should().NotBeNull();
13 | }
14 |
15 | [Test]
16 | public void CompatibleModule_WhenCalled_ShouldNotBeNull()
17 | {
18 | ElectronicKeying.CompatibleModule.Should().NotBeNull();
19 | }
20 |
21 | [Test]
22 | public void Custom_WhenCalled_ShouldNotBeNull()
23 | {
24 | ElectronicKeying.Custom.Should().NotBeNull();
25 | }
26 |
27 | [Test]
28 | public void Disabled_WhenCalled_ShouldNotBeNull()
29 | {
30 | ElectronicKeying.Disabled.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ModuleTypeTests.cs:
--------------------------------------------------------------------------------
1 | using NUnit.Framework;
2 |
3 | namespace L5Sharp.Tests.Core.Enums
4 | {
5 | [TestFixture]
6 | public class ModuleTypeTests
7 | {
8 | [Test]
9 | public void METHOD()
10 | {
11 | var type = ModuleCategory.Digital;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/OpcUAAccessTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Enums
4 | {
5 | [TestFixture]
6 | public class OpcUAAccessTests
7 | {
8 | [Test]
9 | public void None_WhenCalled_ShouldNotBeNull()
10 | {
11 | OpcUAAccess.None.Should().NotBeNull();
12 | }
13 |
14 | [Test]
15 | public void ReadOnly_WhenCalled_ShouldNotBeNull()
16 | {
17 | OpcUAAccess.ReadOnly.Should().NotBeNull();
18 | }
19 |
20 | [Test]
21 | public void ReadWrite_WhenCalled_ShouldNotBeNull()
22 | {
23 | OpcUAAccess.ReadWrite.Should().NotBeNull();
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ProductionTriggerTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class ProductionTriggerTests
8 | {
9 | [Test]
10 | public void Application_WhenCalled_ShouldNotBeNull()
11 | {
12 | ProductionTrigger.Application.Should().NotBeNull();
13 | }
14 |
15 | [Test]
16 | public void Cyclic_WhenCalled_ShouldNotBeNull()
17 | {
18 | ProductionTrigger.Cyclic.Should().NotBeNull();
19 | }
20 |
21 | [Test]
22 | public void Cos_WhenCalled_ShouldNotBeNull()
23 | {
24 | ProductionTrigger.Cos.Should().NotBeNull();
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ProgramTypeTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class ProgramTypeTests
8 | {
9 | [Test]
10 | public void New_Normal_ShouldNotBeNullAndHaveExpectedName()
11 | {
12 | var type = ProgramType.Normal;
13 |
14 | type.Should().NotBeNull();
15 | type.Name.Should().Be("Normal");
16 | }
17 |
18 | [Test]
19 | public void New_EquipmentPhase_ShouldNotBeNullAndHaveExpectedName()
20 | {
21 | var type = ProgramType.EquipmentPhase;
22 |
23 | type.Should().NotBeNull();
24 | type.Name.Should().Be("EquipmentPhase");
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/RadixNullTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using FluentAssertions;
3 | using NUnit.Framework;
4 |
5 | namespace L5Sharp.Tests.Core.Enums
6 | {
7 | [TestFixture]
8 | public class RadixNullTests
9 | {
10 | [Test]
11 | public void Null_WhenCalled_ShouldBeExpected()
12 | {
13 | var radix = Radix.Null;
14 |
15 | radix.Should().NotBeNull();
16 | radix.Should().Be(Radix.Null);
17 | }
18 |
19 | [Test]
20 | public void Format_WhenCalled_ReturnsNull()
21 | {
22 | FluentActions.Invoking(() => Radix.Null.FormatValue(new DINT())).Should().Throw();
23 | }
24 |
25 | [Test]
26 | public void Parse_WhenCalled_ReturnsNull()
27 | {
28 | FluentActions.Invoking(() => Radix.Null.ParseValue("Doesn't matter")).Should().Throw();
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/ScopeLevelTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Enums
4 | {
5 | [TestFixture]
6 | public class ScopeLevelTests
7 | {
8 | [Test]
9 | public void New_Controller_ShouldBeExpected()
10 | {
11 | var sut = ScopeLevel.Controller;
12 |
13 | sut.Should().NotBeNull();
14 | sut.Value.Should().Be("ControllerScope");
15 | }
16 |
17 | [Test]
18 | public void New_Program_ShouldBeExpected()
19 | {
20 | var sut = ScopeLevel.Program;
21 |
22 | sut.Should().NotBeNull();
23 | sut.Value.Should().Be("ProgramScope");
24 | }
25 |
26 | [Test]
27 | public void New_Null_ShouldBeExpected()
28 | {
29 | var sut = ScopeLevel.Null;
30 |
31 | sut.Should().NotBeNull();
32 | sut.Value.Should().Be("NullScope");
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/TagTypeTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class TagTypeTests
8 | {
9 | [Test]
10 | public void Base_WhenCalled_ShouldNotBeNull()
11 | {
12 | TagType.Base.Should().NotBeNull();
13 | }
14 |
15 | [Test]
16 | public void Alias_WhenCalled_ShouldNotBeNull()
17 | {
18 | TagType.Alias.Should().NotBeNull();
19 | }
20 |
21 | [Test]
22 | public void Produced_WhenCalled_ShouldNotBeNull()
23 | {
24 | TagType.Produced.Should().NotBeNull();
25 | }
26 |
27 | [Test]
28 | public void Consumed_WhenCalled_ShouldNotBeNull()
29 | {
30 | TagType.Consumed.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/TaskTypeTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class TaskTypeTests
8 | {
9 | [Test]
10 | public void New_Continuous_ShouldNotBeNull()
11 | {
12 | var type = TaskType.Continuous;
13 |
14 | type.Should().NotBeNull();
15 | }
16 |
17 | [Test]
18 | public void New_Periodic_ShouldNotBeNull()
19 | {
20 | var type = TaskType.Periodic;
21 |
22 | type.Should().NotBeNull();
23 | }
24 |
25 | [Test]
26 | public void New_Event_ShouldNotBeNull()
27 | {
28 | var type = TaskType.Event;
29 |
30 | type.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Enums/TransmissionTypeTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 | using NUnit.Framework;
3 |
4 | namespace L5Sharp.Tests.Core.Enums
5 | {
6 | [TestFixture]
7 | public class TransmissionTypeTests
8 | {
9 | [Test]
10 | public void New_Null_ShouldNotBeNull()
11 | {
12 | var type = TransmissionType.Null;
13 |
14 | type.Should().NotBeNull();
15 | }
16 |
17 | [Test]
18 | public void New_Multicast_ShouldNotBeNull()
19 | {
20 | var type = TransmissionType.Multicast;
21 |
22 | type.Should().NotBeNull();
23 | }
24 |
25 | [Test]
26 | public void New_Unicast_ShouldNotBeNull()
27 | {
28 | var type = TransmissionType.Unicast;
29 |
30 | type.Should().NotBeNull();
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/GlobalUsing.cs:
--------------------------------------------------------------------------------
1 | global using L5Sharp.Core;
2 | global using L5Sharp.Samples;
3 | global using LTask = L5Sharp.Core.Task;
4 | global using Task = System.Threading.Tasks.Task;
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/L5XBasicTests.New_ValidComponent_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | This is a test component
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/L5XBasicTests.New_ValidValues_ShouldBeVerified.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/L5XTasksTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 |
4 | namespace L5Sharp.Tests.Core;
5 |
6 | [TestFixture]
7 | public class L5XTasksTests
8 | {
9 | [Test]
10 | public void ToList_WhenCalled_ShouldNotBeEmpty()
11 | {
12 | var content = L5X.Load(Known.Test);
13 |
14 | var tasks = content.Tasks.ToList();
15 |
16 | tasks.Should().NotBeEmpty();
17 | }
18 |
19 | [Test]
20 | public void Index_ValidIndex_ShouldNotBeNull()
21 | {
22 | var content = L5X.Load(Known.Test);
23 |
24 | var result = content.Tasks[0];
25 |
26 | result.Should().NotBeNull();
27 | }
28 |
29 | [Test]
30 | public void Index_InvalidIndex_ShouldThrowArgumentOutOfRangeException()
31 | {
32 | var content = L5X.Load(Known.Test);
33 |
34 | FluentActions.Invoking(() => content.Tasks[100]).Should().Throw();
35 | }
36 |
37 | [Test]
38 | public void Get_KnownTask_ShouldBeExpected()
39 | {
40 | var content = L5X.Load(Known.Test);
41 |
42 | var result = content.Tasks.Get(Known.Task);
43 |
44 | result.Should().NotBeNull();
45 | result.Name.Should().Be(Known.Task);
46 | }
47 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixContainerTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | // ReSharper disable CollectionNeverUpdated.Local
4 |
5 | namespace L5Sharp.Tests.Core;
6 |
7 | [TestFixture]
8 | public class LogixContainerTests
9 | {
10 | [Test]
11 | public void New_Default_ShouldBeEmpty()
12 | {
13 | var collection = new LogixContainer();
14 |
15 | collection.Should().NotBeNull();
16 | collection.Should().BeEmpty();
17 | }
18 |
19 | [Test]
20 | public void New_CollectionOverload_ShouldHaveExpectedCount()
21 | {
22 | var collection = new LogixContainer([new TestElement(), new TestElement(), new TestElement()]);
23 |
24 | collection.Should().HaveCount(3);
25 | collection.Count.Should().Be(3);
26 | }
27 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.AddAfter_AlternateType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.AddAfter_ValidElement_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.AddBefore_AlternateType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.AddBefore_ValidElement_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.Remove_HasParent_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.Replace_AlternateType_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.Replace_ValidElement_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetChildValue_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetChildValue_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetChildValue_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetComplex_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetComplex_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetComplex_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetContainer_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetContainer_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetContainer_NoValueCollectionWithElements_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetContainer_NoValueToEmptyCollection_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDateTime_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDateTime_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDateTime_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDescription_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDescription_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetDescription_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetProperty_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetProperty_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetProperty_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetRequiredValue_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetRequiredValue_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetSelectorValue_HasValueDifferentValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetSelectorValue_HasValueToNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetSelectorValue_NoValueToValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetValue_ToEmptyHasValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetValue_ToNullHasValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetValue_ToValueEmptyValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetValue_ToValueFromNull_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/LogixElementTests.SetValue_ToValueHasValue_ShouldBeVerified.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/AddOnInstructionSerializerTests.Serialize_BasicType_ShouldBeApproved.verified.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/AlarmAnalogDataSerializerTests.Serialize_ValidType_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/AlarmDataSerializerTests.Serialize_AlarmAnalog_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/AlarmDataSerializerTests.Serialize_AlarmDigital_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/AlarmDigitalDataSerializerTests.Serialize_ValidType_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ArrayMemberSerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ArraySerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ConnectionSerializerTests.Serialize_ValidComponent_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ControllerSerializerTests.Serialize_WhenCalled_ShouldNotBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataTypeMemberSerializerTests.Serialize_AtomicArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataTypeMemberSerializerTests.Serialize_Basic_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataTypeMemberSerializerTests.Serialize_Complex_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataTypeMemberSerializerTests.Serialize_OverLoaded_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataTypeSerializerTests.Serialize_AtomicType_ShouldBeApproved.verified.xml:
--------------------------------------------------------------------------------
1 |
2 | This is a test user defined type
3 |
4 |
5 | This is a new test member
6 |
7 |
8 | This is a test member
9 |
10 |
11 | This is a test member
12 |
13 |
14 | This is a test member
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Int_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Lint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Real_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueMemberSerializerTests.Serialize_Sint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Int_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Lint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Real_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DataValueSerializerTests.Serialize_Sint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DecoratedDataSerializerTests.Serialize_Dint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DecoratedDataSerializerTests.Serialize_EmptyStructure_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DecoratedDataSerializerTests.Serialize_RealArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/DecoratedDataSerializerTests.Serialize_Timer_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/FormattedDataSerializerTests.Serialize_AlarmType_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/FormattedDataSerializerTests.Serialize_ComplexType_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/FormattedDataSerializerTests.Serialize_StringType_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ModuleSerializerTests.Serialize_ValueTypeArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ParameterSerializerTests.Serialize_Basic_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ParameterSerializerTests.Serialize_OverLoaded_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/PortSerializerTests.Serialize_ValidComponentNoBus_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/PortSerializerTests.Serialize_ValidComponent_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/ProgramSerializerTests.Serialize_BasicProgram_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/RungSerializerTests.Serialize_Bool_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/StructureMemberSerializerTests.Serialize_DataValueValueMembers_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/StructureSerializerTests.Serialize_DataValueValueMembers_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/StructureSerializerTests.Serialize_EmptyStructure_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_AlarmDigital_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleBoolArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleBool_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleDintArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleDint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleIntArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleInt_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleLintArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleLint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleRealArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleReal_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleSintArray_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_SimpleSint_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_String_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TagSerializerTests.Serialize_Timer_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TaskSerializerTests.Serialize_ContinuousTask_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TaskSerializerTests.Serialize_EventTask_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Serialization/TaskSerializerTests.Serialize_PeriodicTask_ShouldBeApproved.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/BoolGenerator.cs:
--------------------------------------------------------------------------------
1 | using AutoFixture.Kernel;
2 |
3 | namespace L5Sharp.Tests.Core.Specimens
4 | {
5 | public class BoolGenerator : ISpecimenBuilder
6 | {
7 | public object Create(object request, ISpecimenContext context)
8 | {
9 | if (request is not Type type)
10 | return new NoSpecimen();
11 |
12 | if (type != typeof(BOOL))
13 | return new NoSpecimen();
14 |
15 | return new BOOL();
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/DintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class DintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(DINT))
14 | return new NoSpecimen();
15 |
16 | return new DINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/IntGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class IntGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(INT))
14 | return new NoSpecimen();
15 |
16 | return new INT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/LintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class LintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(LINT))
14 | return new NoSpecimen();
15 |
16 | return new LINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/RealGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class RealGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(REAL))
14 | return new NoSpecimen();
15 |
16 | return new REAL();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/SintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class SintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(SINT))
14 | return new NoSpecimen();
15 |
16 | return new SINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/UDintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class UDintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(UDINT))
14 | return new NoSpecimen();
15 |
16 | return new UDINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/UIntGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class UIntGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(UINT))
14 | return new NoSpecimen();
15 |
16 | return new UINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/ULintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class ULintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(ULINT))
14 | return new NoSpecimen();
15 |
16 | return new ULINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Specimens/USintGenerator.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using AutoFixture.Kernel;
3 |
4 | namespace L5Sharp.Tests.Core.Specimens
5 | {
6 | public class USintGenerator : ISpecimenBuilder
7 | {
8 | public object Create(object request, ISpecimenContext context)
9 | {
10 | if (request is not Type type)
11 | return new NoSpecimen();
12 |
13 | if (type != typeof(USINT))
14 | return new NoSpecimen();
15 |
16 | return new USINT();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Core/Utilities/ParseTests.cs:
--------------------------------------------------------------------------------
1 | using FluentAssertions;
2 |
3 | namespace L5Sharp.Tests.Core.Utilities;
4 |
5 | [TestFixture]
6 | public class ParseTests
7 | {
8 | [Test]
9 | public void ParseType_Radix_ShouldBeExpected()
10 | {
11 | var value = "Decimal".Parse(typeof(Radix));
12 |
13 | value.Should().Be(Radix.Decimal);
14 | }
15 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Logix/AcdTests.cs:
--------------------------------------------------------------------------------
1 | using L5Sharp.Logix;
2 | using L5Sharp.Samples;
3 |
4 | namespace L5Sharp.Tests.Logix;
5 |
6 | public class AcdTests
7 | {
8 | [Test]
9 | public async Task ConvertAsync_ValidFile_ShouldNotBeNull()
10 | {
11 | var project = await ACD.LoadAsync(Known.TestAcd);
12 |
13 | Assert.That(project, Is.Not.Null);
14 | }
15 | }
--------------------------------------------------------------------------------
/tests/L5Sharp.Tests.Logix/L5Sharp.Tests.Logix.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | enable
6 | enable
7 |
8 | false
9 | true
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------