Skip to content

Commit

Permalink
Merge pull request #10 from JSkimming/correct-charge-state
Browse files Browse the repository at this point in the history
Use the correct properties for the charge state
  • Loading branch information
JSkimming committed Jan 21, 2018
2 parents f28d83c + 2efe351 commit d6192e5
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 22 deletions.
25 changes: 18 additions & 7 deletions src/Tesla.NET/Models/ChargeState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
namespace Tesla.NET.Models
{
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using Newtonsoft.Json;
Expand Down Expand Up @@ -87,17 +86,17 @@ public ChargeState(
long? chargeRate = null,
bool? chargePortDoorOpen = null,
string connChargeCable = null,
string scheduledChargingStartTime = null,
long? scheduledChargingStartTime = null,
bool? scheduledChargingPending = null,
string userChargeEnableRequest = null,
bool? userChargeEnableRequest = null,
bool? chargeEnableRequest = null,
int? chargerPhases = null,
string chargePortLatch = null,
long? chargeCurrentRequest = null,
long? chargeCurrentRequestMax = null,
bool? managedChargingActive = null,
bool? managedChargingUserCanceled = null,
string managedChargingStartTime = null,
long? managedChargingStartTime = null,
bool? batteryHeaterOn = null,
bool? notEnoughPowerToHeat = null,
long timestamp = 0)
Expand Down Expand Up @@ -311,7 +310,13 @@ public ChargeState(
/// Gets the schedule charging start time of a <see cref="Vehicle"/>.
/// </summary>
[JsonProperty("scheduled_charging_start_time")]
public string ScheduledChargingStartTime { get; }
public long? ScheduledChargingStartTime { get; }

/// <summary>
/// Gets the UTC <see cref="DateTime"/> of the schedule charging start time of a <see cref="Vehicle"/>.
/// </summary>
[JsonIgnore]
public DateTime? ScheduledChargingStartTimeUtc => EpochConversion.FromSeconds(ScheduledChargingStartTime);

/// <summary>
/// Gets a value indicating whether scheduled charging is pending for a <see cref="Vehicle"/>.
Expand All @@ -323,7 +328,7 @@ public ChargeState(
/// Gets a value indicating whether a user charge enable request has been made for a <see cref="Vehicle"/>.
/// </summary>
[JsonProperty("user_charge_enable_request")]
public string UserChargeEnableRequest { get; }
public bool? UserChargeEnableRequest { get; }

/// <summary>
/// Gets a value indicating whether a charge enable request has been made for a <see cref="Vehicle"/>.
Expand Down Expand Up @@ -371,7 +376,13 @@ public ChargeState(
/// Gets the managed charging start time of a <see cref="Vehicle"/>.
/// </summary>
[JsonProperty("managed_charging_start_time")]
public string ManagedChargingStartTime { get; }
public long? ManagedChargingStartTime { get; }

/// <summary>
/// Gets the UTC <see cref="DateTime"/> of the managed charging start time of a <see cref="Vehicle"/>.
/// </summary>
[JsonIgnore]
public DateTime? ManagedChargingStartTimeUtc => EpochConversion.FromSeconds(ManagedChargingStartTime);

/// <summary>
/// Gets a value indicating whether battery heating is on for a <see cref="Vehicle"/>.
Expand Down
10 changes: 10 additions & 0 deletions src/Tesla.NET/Models/EpochConversion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ internal static class EpochConversion
/// <returns>The UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.</returns>
public static DateTime FromSeconds(long epoch) => Epoch + TimeSpan.FromSeconds(epoch);

/// <summary>
/// Returns the UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.
/// </summary>
/// <param name="epoch">The number of seconds since the <see cref="Epoch"/>.</param>
/// <returns>The UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.</returns>
public static DateTime? FromSeconds(long? epoch)
{
return epoch.HasValue ? FromSeconds(epoch.Value) : default(DateTime?);
}

/// <summary>
/// Returns the UTC <see cref="DateTime"/> of the <paramref name="epoch"/> milliseconds.
/// </summary>
Expand Down
22 changes: 16 additions & 6 deletions test/Tesla.NET.Tests/Models/ChargeStateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,15 +140,15 @@ public void conn_charge_cable() =>

[Fact]
public void scheduled_charging_start_time() =>
_json["scheduled_charging_start_time"].Value<string>().Should().Be(_sut.ScheduledChargingStartTime);
_json["scheduled_charging_start_time"].Value<long?>().Should().Be(_sut.ScheduledChargingStartTime);

[Fact]
public void scheduled_charging_pending() =>
_json["scheduled_charging_pending"].Value<bool?>().Should().Be(_sut.ScheduledChargingPending);

[Fact]
public void user_charge_enable_request() =>
_json["user_charge_enable_request"].Value<string>().Should().Be(_sut.UserChargeEnableRequest);
_json["user_charge_enable_request"].Value<bool?>().Should().Be(_sut.UserChargeEnableRequest);

[Fact]
public void charge_enable_request() =>
Expand Down Expand Up @@ -180,7 +180,7 @@ public void managed_charging_user_canceled() =>

[Fact]
public void managed_charging_start_time() =>
_json["managed_charging_start_time"].Value<string>().Should().Be(_sut.ManagedChargingStartTime);
_json["managed_charging_start_time"].Value<long?>().Should().Be(_sut.ManagedChargingStartTime);

[Fact]
public void battery_heater_on() =>
Expand Down Expand Up @@ -339,15 +339,15 @@ public void conn_charge_cable() =>

[Fact]
public void scheduled_charging_start_time() =>
_sut.ScheduledChargingStartTime.Should().Be(_json["scheduled_charging_start_time"].Value<string>());
_sut.ScheduledChargingStartTime.Should().Be(_json["scheduled_charging_start_time"].Value<long?>());

[Fact]
public void scheduled_charging_pending() =>
_sut.ScheduledChargingPending.Should().Be(_json["scheduled_charging_pending"].Value<bool?>());

[Fact]
public void user_charge_enable_request() =>
_sut.UserChargeEnableRequest.Should().Be(_json["user_charge_enable_request"].Value<string>());
_sut.UserChargeEnableRequest.Should().Be(_json["user_charge_enable_request"].Value<bool?>());

[Fact]
public void charge_enable_request() =>
Expand Down Expand Up @@ -379,7 +379,7 @@ public void managed_charging_user_canceled() =>

[Fact]
public void managed_charging_start_time() =>
_sut.ManagedChargingStartTime.Should().Be(_json["managed_charging_start_time"].Value<string>());
_sut.ManagedChargingStartTime.Should().Be(_json["managed_charging_start_time"].Value<long?>());

[Fact]
public void battery_heater_on() =>
Expand Down Expand Up @@ -576,6 +576,16 @@ public ChargeState_Should_calculate(ITestOutputHelper output)
output.WriteLine("Serialized JSON:" + Environment.NewLine + json);
}

[Fact]
public void ScheduledChargingStartTimeUtc() =>
_sut.ScheduledChargingStartTimeUtc.Should().Be(Epoch.AddSeconds(
_sut.ScheduledChargingStartTime.GetValueOrDefault()));

[Fact]
public void ManagedChargingStartTimeUtc() =>
_sut.ManagedChargingStartTimeUtc.Should().Be(Epoch.AddSeconds(
_sut.ManagedChargingStartTime.GetValueOrDefault()));

[Fact]
public void TimestampUtc() => _sut.TimestampUtc.Should().Be(Epoch.AddMilliseconds(_sut.Timestamp));
}
Expand Down
10 changes: 5 additions & 5 deletions test/Tesla.NET.Tests/Models/GetChargeStateResponse.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,17 @@
"charge_rate": 19.7,
"charge_port_door_open": true,
"conn_charge_cable": "IEC",
"scheduled_charging_start_time": "unknown scheduled_charging_start_time",
"scheduled_charging_pending": false,
"user_charge_enable_request": "unknown user_charge_enable_request",
"charge_enable_request": true,
"scheduled_charging_start_time": 1516597200,
"scheduled_charging_pending": true,
"user_charge_enable_request": false,
"charge_enable_request": false,
"charger_phases": 3,
"charge_port_latch": "Engaged",
"charge_current_request": 9,
"charge_current_request_max": 16,
"managed_charging_active": false,
"managed_charging_user_canceled": false,
"managed_charging_start_time": "unknown managed_charging_start_time",
"managed_charging_start_time": 1516571646,
"battery_heater_on": false,
"not_enough_power_to_heat": false,
"timestamp": 1515396974152
Expand Down
8 changes: 4 additions & 4 deletions test/Tesla.NET.Tests/Tesla.NET.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="AutoFixture.AutoMoq" Version="4.0.0-rc1" />
<PackageReference Include="AutoFixture.SeedExtensions" Version="4.0.0-rc1" />
<PackageReference Include="AutoFixture.Xunit2" Version="4.0.0-rc1" />
<PackageReference Include="AutoFixture.AutoMoq" Version="4.0.0" />
<PackageReference Include="AutoFixture.SeedExtensions" Version="4.0.0" />
<PackageReference Include="AutoFixture.Xunit2" Version="4.0.0" />
<PackageReference Include="AutoTest.ArgumentNullException.Xunit" Version="0.9.0" />
<PackageReference Include="FluentAssertions" Version="4.19.4" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
<PackageReference Include="Moq" Version="4.7.145" />
<PackageReference Include="Moq" Version="4.8.1" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
Expand Down

0 comments on commit d6192e5

Please sign in to comment.