Exemple #1
0
        protected const float ERROR_RATE = 1f / 60f;               // Less than 1 minute of error is acceptable.

        private SunStudyTestsJson.RootTest LoadTestData(string in_testfilename)
        {
            string file_path = System.IO.Path.Combine(Application.dataPath, "Tests", "Data", in_testfilename);

            if (!System.IO.File.Exists(file_path))
            {
                string[] guids = AssetDatabase.FindAssets(System.IO.Path.GetFileNameWithoutExtension(in_testfilename));
                if (guids.Length > 0)
                {
                    foreach (string guid in guids)
                    {
                        string path = AssetDatabase.GUIDToAssetPath(guid);
                        if (System.IO.File.Exists(path))
                        {
                            file_path = path;
                            break;
                        }
                    }
                }
            }

            string json = System.IO.File.ReadAllText(file_path);

            SunStudyTestsJson.RootTest testData = JsonUtility.FromJson <SunStudyTestsJson.RootTest>(json);
            return(testData);
        }
Exemple #2
0
        //protected void ExecuteSolarCycleTest(float ERROR_RATE_MINUTES, string testJsonFileName)
        //{
        //	SunStudyTestsJson.RootTest testData = LoadTestData(testJsonFileName);
        //	var geoCoordinates = Tuple.Create<float, float>(testData.latitude, testData.longitude);
        //	int utcOffsetHour = (int)testData.utcOffset;
        //	int utcOffsetMinute = (int)((testData.utcOffset - utcOffsetHour) * 60f);
        //	TimeSpan offset = new TimeSpan(utcOffsetHour, utcOffsetMinute, 0);

        //	foreach(SunStudyTestsJson.TestValue value in testData.values)
        //	{
        //		if (value.timeH != 0)
        //			continue;       // For Solar tests, we can test only one hour entry per day since we are testing sunrise and sunset times.

        //		double sunriseCheck = value.localSunriseHourFraction;
        //		int sunriseCheckHour = (int)sunriseCheck;
        //		double sunriseCheckMinutes = sunriseCheckHour * 60.0 + (sunriseCheck - sunriseCheckHour);

        //		double sunsetCheck = value.localSunsetHourFraction;
        //		int sunsetCheckHour = (int)sunsetCheck;
        //		double sunsetCheckMinutes = sunsetCheckHour * 60.0 + (sunsetCheck - sunsetCheckHour);

        //		DateTimeOffset solarCheckDate = new DateTimeOffset(value.dateY, value.dateM, value.dateD, 0, 0, 0, offset);
        //		(double julianSunrise, double julianSunset, double transit) = SunStudy.GetJulianDatesForSunriseAndSunset(solarCheckDate, geoCoordinates.Item1, geoCoordinates.Item2);
        //		DateTimeOffset sunriseDateTime = SunStudy.MakeDateTimeOffsetWithJDateTimeFraction(julianSunrise, solarCheckDate);
        //		DateTimeOffset sunsetDateTime = SunStudy.MakeDateTimeOffsetWithJDateTimeFraction(julianSunset, solarCheckDate);

        //		double sunriseTestMinutes = sunriseDateTime.Hour * 60.0 + sunriseDateTime.Minute;
        //		double sunsetTestMinutes = sunsetDateTime.Hour * 60.0 + sunsetDateTime.Minute;
        //		Assert.AreEqual(sunriseCheckMinutes, sunriseTestMinutes, ERROR_RATE_MINUTES, $"Sunrise Time not equal with {ERROR_RATE_MINUTES} minutes accuracy: JD Sunrise: {julianSunrise}, SPA Check JD value: {sunriseCheck}");
        //		Assert.AreEqual(sunsetCheckMinutes, sunsetTestMinutes, ERROR_RATE_MINUTES, $"Sunset Time not equal with {ERROR_RATE_MINUTES} minutes accuracy: JD Sunrise: {julianSunrise}, SPA Check JD value: {sunsetCheck}");
        //	}
        //}

        protected void ExecuteTest(float ERROR_RATE, string testJsonFileName, bool testAzimuth = true)
        {
            SunStudyTestsJson.RootTest testData = LoadTestData(testJsonFileName);
            var geoCoordinates = Tuple.Create <float, float>(testData.latitude, testData.longitude);

            int      utcOffsetHour   = (int)testData.utcOffset;
            int      utcOffsetMinute = (int)((testData.utcOffset - utcOffsetHour) * 60f);
            TimeSpan offset          = new TimeSpan(utcOffsetHour, utcOffsetMinute, 0);

            List <DateTimeOffset>        datetimeInputs = new List <DateTimeOffset>();
            List <Tuple <float, float> > outputResults  = new List <Tuple <float, float> >();

            foreach (SunStudyTestsJson.TestValue test in testData.values)
            {
                datetimeInputs.Add(new DateTimeOffset(test.dateY, test.dateM, test.dateD, test.timeH, test.timeM, test.timeS, offset));
                outputResults.Add(Tuple.Create <float, float>(test.azimuth, test.elevation));
            }

            GeoPositionExecuteTests(geoCoordinates, datetimeInputs, outputResults, ERROR_RATE, testAzimuth);
        }