private void ValidateRootValues(ExpectedOutputJson actualSettings, ExpectedOutputJson expectedOutput)
        {
            Assert.That(actualSettings.MetadataVersion, Is.EqualTo(expectedOutput.MetadataVersion));
            Assert.That(actualSettings.TotalRamMib, Is.EqualTo(expectedOutput.TotalRamMib));
            Assert.That(actualSettings.LogicalProcessors, Is.EqualTo(expectedOutput.LogicalProcessors));
            Assert.That(actualSettings.Hostname, Is.EqualTo(expectedOutput.Hostname));
            Assert.That(actualSettings.FullHostName, Is.EqualTo(expectedOutput.FullHostName));

            Assert.That(actualSettings.IpAddress.Count, Is.EqualTo(expectedOutput.IpAddress.Count));
            foreach (var ipAddress in expectedOutput.IpAddress)
            {
                Assert.That(actualSettings.IpAddress.Contains(ipAddress), Is.True);
            }
        }
        private void ValidateUserConfigSettings(ExpectedOutputJson actualSettings, ExpectedOutputJson expectedOutput)
        {
            if (expectedOutput.Config != null)
            {
                // Logical Processors
                if (expectedOutput.Config.LogicalProcessors != null)
                {
                    Assert.That(actualSettings.Config.LogicalProcessors, Is.EqualTo(expectedOutput.Config.LogicalProcessors));
                }
                else
                {
                    Assert.That(actualSettings.Config.LogicalProcessors, Is.Null);
                }


                // Total RAM Mib
                if (expectedOutput.Config.TotalRamMib != null)
                {
                    Assert.That(actualSettings.Config.TotalRamMib, Is.EqualTo(expectedOutput.Config.TotalRamMib));
                }
                else
                {
                    Assert.That(actualSettings.Config.TotalRamMib, Is.Null);
                }

                // Billing_Hostname
                if (expectedOutput.Config.Hostname != null)
                {
                    Assert.That(actualSettings.Config.Hostname, Is.EqualTo(expectedOutput.Config.Hostname));
                }
                else
                {
                    Assert.That(actualSettings.Config.Hostname, Is.Null);
                }
            }
            else
            {
                Assert.That(actualSettings.Config, Is.Null);
            }
        }
        private void ValidateVendors(ExpectedOutputJson actualSettings, ExpectedOutputJson expectedOutput)
        {
            if (expectedOutput.Vendors != null)
            {
                // AWS
                if (expectedOutput.Vendors.Aws != null)
                {
                    Assert.That(actualSettings.Vendors.Aws.InstanceId, Is.EqualTo(expectedOutput.Vendors.Aws.InstanceId));
                    Assert.That(actualSettings.Vendors.Aws.InstanceType, Is.EqualTo(expectedOutput.Vendors.Aws.InstanceType));
                    Assert.That(actualSettings.Vendors.Aws.AvailabilityZone, Is.EqualTo(expectedOutput.Vendors.Aws.AvailabilityZone));
                }
                else
                {
                    Assert.That(actualSettings.Vendors?.Aws, Is.Null);
                }

                // Azure
                if (expectedOutput.Vendors.Azure != null)
                {
                    Assert.That(actualSettings.Vendors.Azure.Location, Is.EqualTo(expectedOutput.Vendors.Azure.Location));
                    Assert.That(actualSettings.Vendors.Azure.VmId, Is.EqualTo(expectedOutput.Vendors.Azure.VmId));
                    Assert.That(actualSettings.Vendors.Azure.VmSize, Is.EqualTo(expectedOutput.Vendors.Azure.VmSize));
                }
                else
                {
                    Assert.That(actualSettings.Vendors?.Azure, Is.Null);
                }

                // GCP
                if (expectedOutput.Vendors.Gcp != null)
                {
                    Assert.That(actualSettings.Vendors.Gcp.Id, Is.EqualTo(expectedOutput.Vendors.Gcp.Id));
                    Assert.That(actualSettings.Vendors.Gcp.MachineType, Is.EqualTo(expectedOutput.Vendors.Gcp.MachineType));
                    Assert.That(actualSettings.Vendors.Gcp.Zone, Is.EqualTo(expectedOutput.Vendors.Gcp.Zone));
                }
                else
                {
                    Assert.That(actualSettings.Vendors?.Gcp, Is.Null);
                }

                // PCF
                if (expectedOutput.Vendors.Pcf != null)
                {
                    Assert.That(actualSettings.Vendors.Pcf.CfInstanceGuid, Is.EqualTo(expectedOutput.Vendors.Pcf.CfInstanceGuid));
                    Assert.That(actualSettings.Vendors.Pcf.CfInstanceIp, Is.EqualTo(expectedOutput.Vendors.Pcf.CfInstanceIp));
                    Assert.That(actualSettings.Vendors.Pcf.MemoryLimit, Is.EqualTo(expectedOutput.Vendors.Pcf.MemoryLimit));
                }
                else
                {
                    Assert.That(actualSettings.Vendors?.Pcf, Is.Null);
                }

                //Kubernbetes
                if (expectedOutput.Vendors.Kubernetes != null)
                {
                    Assert.That(actualSettings.Vendors.Kubernetes.KubernetesServiceHost, Is.EqualTo(expectedOutput.Vendors.Kubernetes.KubernetesServiceHost));
                }
                else
                {
                    Assert.That(actualSettings.Vendors?.Kubernetes, Is.Null);
                }
            }
            else
            {
                Assert.That(actualSettings.Vendors, Is.Null);
            }
        }