csharp-sdk-upm/Storage/Storage.Test/GeoTest.cs

53 lines
1.9 KiB
C#
Raw Normal View History

using NUnit.Framework;
2021-05-12 13:56:28 +08:00
using System;
using System.Threading.Tasks;
using LeanCloud.Storage;
2020-04-28 17:04:46 +08:00
namespace Storage.Test {
2021-04-29 15:58:22 +08:00
public class GeoTest : BaseTest {
[Test]
public void Calculate() {
LCGeoPoint p1 = new LCGeoPoint(20.0059, 110.3665);
LCGeoPoint p2 = new LCGeoPoint(20.0353, 110.3645);
double kilometers = p1.KilometersTo(p2);
TestContext.WriteLine(kilometers);
Assert.Less(kilometers - 3.275, 0.01);
double miles = p1.MilesTo(p2);
TestContext.WriteLine(miles);
Assert.Less(miles - 2.035, 0.01);
double radians = p1.RadiansTo(p2);
TestContext.WriteLine(radians);
Assert.Less(radians - 0.0005, 0.0001);
}
2021-05-12 13:56:28 +08:00
[Test]
public async Task Query() {
LCObject geoObj = new LCObject("GeoObj");
Random random = new Random();
LCGeoPoint p1 = new LCGeoPoint(-90 + random.NextDouble() * 180, -180 + random.NextDouble() * 360);
geoObj["location"] = p1;
await geoObj.Save();
LCGeoPoint p2 = new LCGeoPoint(p1.Latitude + 0.01, p1.Longitude + 0.01);
double km = p1.KilometersTo(p2);
TestContext.WriteLine($"km: {km}, {Math.Ceiling(km)}");
LCQuery<LCObject> query = new LCQuery<LCObject>("GeoObj");
query.WhereWithinKilometers("location", p2, Math.Ceiling(km));
Assert.Greater((await query.Find()).Count, 0);
double miles = p1.MilesTo(p2);
query = new LCQuery<LCObject>("GeoObj");
query.WhereWithinMiles("location", p2, Math.Ceiling(miles));
Assert.Greater((await query.Find()).Count, 0);
double radians = p1.RadiansTo(p2);
query = new LCQuery<LCObject>("GeoObj");
query.WhereWithinRadians("location", p2, Math.Ceiling(radians));
Assert.Greater((await query.Find()).Count, 0);
}
}
}