public void ParsePercentsFactionParameterValueTest()
        {
            var parameterLink     = new ParameterLink("autovacuum_vacuum_scale_factor");
            var rawParameterValue = new RawRangeParameterValue("0.8", RawValueType.Real, (0, 100));

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <FractionParameterValue>(parameterValue);
            Assert.AreEqual(new IUnit.None(), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
        }
        public void ParseFactionParameterValueTest()
        {
            var parameterLink     = new ParameterLink("checkpoint_completion_target");
            var rawParameterValue = new RawRangeParameterValue("0.5", RawValueType.Real, (0, 1));

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <FractionParameterValue>(parameterValue);
            Assert.AreEqual(new IUnit.None(), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
        }
        public void ParseBooleanParameterValueTest([Values(true, false)] bool underlyingValue)
        {
            var parameterLink     = new ParameterLink("autovacuum");
            var rawParameterValue = new RawParameterValue(underlyingValue ? "on" : "off", RawValueType.Bool);

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <BooleanParameterValue>(parameterValue);
            Assert.AreEqual(new IUnit.None(), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
            Assert.AreEqual(underlyingValue, ((BooleanParameterValue)parameterValue).Value);
        }
        public void ParseMemoryParameterValueTest()
        {
            var parameterLink     = new ParameterLink("effective_cache_size");
            var rawParameterValue = new RawRangeParameterValue("4GB", RawValueType.Integer, (1, 2147483647));

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <MemoryParameterValue>(parameterValue);
            // 4GB is less then 10GB, so it's normalized to megabytes.
            Assert.AreEqual(new IUnit.Mem(Memory.Unit.Megabytes), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
        }
        public void ParseTimeSpanParameterValueTest()
        {
            var parameterLink     = new ParameterLink("autovacuum_naptime");
            var rawParameterValue = new RawRangeParameterValue("30s", RawValueType.Integer, (1, 2147483));

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <TimeSpanParameterValue>(parameterValue);
            // 30s is more then 10s, so it's normalized to seconds.
            Assert.AreEqual(new IUnit.TimeSpan(PositiveTimeSpan.Unit.Seconds), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
        }
        public void ParseIntegerParameterValueWithRangeTest()
        {
            const int underlyingValue   = 100;
            var       parameterLink     = new ParameterLink("max_connections");
            var       rawParameterValue = new RawRangeParameterValue(underlyingValue.ToString(), RawValueType.Integer, (1, 262143));

            var parameterValueParser = GetService <IParameterValueParser>();
            var parameterValue       = parameterValueParser.Parse(parameterLink, rawParameterValue);

            Assert.IsInstanceOf <IntegerParameterValue>(parameterValue);
            Assert.AreEqual(new IUnit.None(), parameterValue.Unit);
            Assert.AreEqual(parameterLink, parameterValue.Link);
            Assert.AreEqual(underlyingValue, ((IntegerParameterValue)parameterValue).Value);
        }