예제 #1
0
        public void TryGetEnumFromSnakeCase()
        {
            var success = HassSerializer.TryGetEnumFromSnakeCase <TestEnum>(expectedTestValueEnumResult, out var result);

            Assert.IsTrue(success);
            Assert.AreEqual(TestEnum.TestValue, result);
        }
예제 #2
0
        public void TryGetEnumFromSnakeCaseWithInvalidValue()
        {
            var success = HassSerializer.TryGetEnumFromSnakeCase <TestEnum>("invalid_value", out var result);

            Assert.IsFalse(success);
            Assert.AreEqual(default(TestEnum), result);
        }
예제 #3
0
        private async Task <StateChangedEvent> ForceStateChangedAndGetEventData(MockEventSubscriber subscriber)
        {
            var domain = testEntitytId.GetDomain();
            var update = await this.hassWSApi.CallServiceForEntitiesAsync(domain, "toggle", testEntitytId);

            Assert.NotNull(update, "SetUp failed");

            var eventResultInfo = await subscriber.WaitFirstEventArgWithTimeoutAsync <EventResultInfo>(
                (x) => HassSerializer.TryGetEnumFromSnakeCase <KnownEventTypes>(x.EventType, out var knownEventType) &&
                knownEventType == KnownEventTypes.StateChanged,
                500);

            Assert.NotNull(eventResultInfo, "SetUp failed");

            return(eventResultInfo.DeserializeData <StateChangedEvent>());
        }
예제 #4
0
        public TEnum AsEnum(string value)
        {
            if (string.IsNullOrEmpty(value))
            {
                if (this.valueForNullString.HasValue)
                {
                    return(this.valueForNullString.Value);
                }
                else
                {
                    throw new ArgumentException($"'{nameof(value)}' cannot be null or empty", nameof(value));
                }
            }

            if (!this.cache.Forward.TryGetValue(value, out var result) &&
                HassSerializer.TryGetEnumFromSnakeCase(value, out result))
            {
                this.cache.Add(value, result);
            }

            return(result);
        }