public void ShouldSubstituteSpecialVariables()
        {
            var variables = new TelemetryValues(new[]
            {
                new TelemetryVariable
                {
                    Min  = 1,
                    Name = "Counter",
                    Step = 1,
                },
            });

            var telemetryTemplate = new TelemetryTemplate(
                $"$.Counter $.{Constants.TicksValueName} $.{Constants.GuidValueName}",
                variables.VariableNames());

            var generatedPayload = telemetryTemplate.Create(
                variables.NextValues(previous: null));

            var parts = generatedPayload.Split();

            Assert.Equal(3, parts.Length);
            Assert.Equal("1", parts[0]);                 // Counter must be 1
            Assert.True(parts[1].All(char.IsDigit));     // Ticks must be an int
            Assert.True(Guid.TryParse(parts[2], out _)); // Guid should be parseable
        }
        public void ShouldSubstituteVariablesCorrectly(
            Dictionary <string, object> previousValues,
            Dictionary <string, object> vars,
            string template,
            string expectedPayload)
        {
            var variables = new TelemetryValues(
                vars.Select(var => new TelemetryVariable
            {
                Name   = var.Key,
                Values = new[] { var.Value },
            }).ToArray());

            var telemetryTemplate = new TelemetryTemplate(
                template,
                variables.VariableNames());

            var generatedPayload = telemetryTemplate.Create(
                variables.NextValues(previous: previousValues));

            Assert.Equal(expectedPayload, generatedPayload);
        }