예제 #1
0
        public void CalculateDateTaken_ValidatePriorityOfCalculation_Success()
        {
            DateTime dateByFolderName = new DateTime(2001, 11, 29);
            string   imageFolder      = Path.Combine(Environment.CurrentDirectory, $"{dateByFolderName.Year}{dateByFolderName.Month}{dateByFolderName.Day}_CanIgnoreThis");

            if (!Directory.Exists(imageFolder))
            {
                Directory.CreateDirectory(imageFolder);
            }

            //date value in title takes precedence
            string dateInTitle = Path.Combine(imageFolder, TestingImagesNames.GretaShmuel);

            File.Copy(TestingImagesNames.GretaShmuel, dateInTitle);
            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(dateInTitle), new FileInfo(dateInTitle));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1976, 3, 1), valueForDateTaken);

            //fallback to date value in image file name
            string dateInName = Path.Combine(imageFolder, "19611231_" + TestingImagesNames.NoDateHint);

            File.Copy(TestingImagesNames.NoDateHint, dateInName);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(dateInName), new FileInfo(dateInName));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1961, 12, 31), valueForDateTaken);

            //least priority fallback to date by folder name
            string noDateHintInName = Path.Combine(imageFolder, TestingImagesNames.NoDateHint);

            File.Copy(TestingImagesNames.NoDateHint, noDateHintInName);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(noDateHintInName), new FileInfo(noDateHintInName));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(dateByFolderName, valueForDateTaken);
        }
예제 #2
0
        public void CalculateDateTaken_NoHint_ReturnsDateTimeMin()
        {
            string imageFileName = TestingImagesNames.NoDateHint;

            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(DateTime.MinValue, valueForDateTaken);
        }
예제 #3
0
        public void CalculateDateTaken_byFullDateIsImageTitle_Success()
        {
            string imageFileName = TestingImagesNames.GadBrit;

            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1964, 10, 15), valueForDateTaken);
        }
예제 #4
0
        public void CalculateDateTaken_byYear_Success()
        {
            string imageFileName = TestingImagesNames.HaimBaruch;

            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1988, 1, 1), valueForDateTaken);
        }
예제 #5
0
        public void CalculateDateTaken_bySlash_Success()
        {
            string imageFileName = TestingImagesNames.ShmuelRahel;

            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1979, 8, 1), valueForDateTaken);
        }
예제 #6
0
        public void CalculateDateTaken_ByFullDateOnImageName_Success()
        {
            string imageFileName = TestingImagesNames.NoDateHint;

            string imageStartsWith8DigitDate = "19771027_" + imageFileName;

            File.Copy(imageFileName, imageStartsWith8DigitDate);
            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageStartsWith8DigitDate), new FileInfo(imageStartsWith8DigitDate));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1977, 10, 27), valueForDateTaken);
        }
예제 #7
0
        public void CalculateDateTaken_byUnderscoreWithMonthAndDate_Success()
        {
            string imageFileName = TestingImagesNames.GretaShmuel;

            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1976, 3, 1), valueForDateTaken);

            imageFileName       = TestingImagesNames.AlonTechnion;
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1990, 3, 1), valueForDateTaken);
        }
예제 #8
0
        public void CalculateDateTaken_ManyVariationsOfDatesWithDifferentUnderScorePositions_Success()
        {
            string imageFileName = TestingImagesNames.NoDateHint;

            string yearMonthUnderscoreDayAndFileName = "200910_03" + imageFileName;

            File.Copy(imageFileName, yearMonthUnderscoreDayAndFileName);
            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearMonthUnderscoreDayAndFileName), new FileInfo(yearMonthUnderscoreDayAndFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(2009, 10, 3), valueForDateTaken);

            string yearUnderscoreMonthAndDay = "1962_0629_CanIgnore.jpg";

            File.Copy(imageFileName, yearUnderscoreMonthAndDay);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthAndDay), new FileInfo(yearUnderscoreMonthAndDay));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 6, 29), valueForDateTaken);

            string yearAndMonthUnderscoreDay = "196206_29_CanIgnore.jpg";

            File.Copy(imageFileName, yearAndMonthUnderscoreDay);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearAndMonthUnderscoreDay), new FileInfo(yearAndMonthUnderscoreDay));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 6, 29), valueForDateTaken);

            string yearAndMonthUnderscoreAndBlahToIgnore = "196206_CanIgnore.jpg";

            File.Copy(imageFileName, yearAndMonthUnderscoreAndBlahToIgnore);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearAndMonthUnderscoreAndBlahToIgnore), new FileInfo(yearAndMonthUnderscoreAndBlahToIgnore));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 6, 1), valueForDateTaken);

            string yearUnderscoreMonthAndBlahToIgnore = "1962_07_CanIgnore.jpg";

            File.Copy(imageFileName, yearUnderscoreMonthAndBlahToIgnore);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthAndBlahToIgnore), new FileInfo(yearUnderscoreMonthAndBlahToIgnore));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 7, 1), valueForDateTaken);

            string yearUnderscoreMonthUnderscoreAndHebrewCharacters = TestingImagesNames.YearUnderscoreMonthUnderscoreAndHebrewCharacters;

            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthUnderscoreAndHebrewCharacters), new FileInfo(yearUnderscoreMonthUnderscoreAndHebrewCharacters));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 7, 1), valueForDateTaken);
        }
예제 #9
0
        public void CalculateDateTaken_ByDirectoryName_Success()
        {
            string imageFileName = TestingImagesNames.NoDateHint;
            string imageFolder   = Path.Combine(Environment.CurrentDirectory, "19770201");

            if (!Directory.Exists(imageFolder))
            {
                Directory.CreateDirectory(imageFolder);
            }
            File.Copy(imageFileName, Path.Combine(imageFolder, imageFileName));

            imageFileName = Path.Combine(imageFolder, imageFileName);
            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(imageFileName), new FileInfo(imageFileName));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1977, 2, 1), valueForDateTaken);
        }
예제 #10
0
        public void CalculateDateTaken_ManyVariationsOfDatesWithDifferentUnderScorePositions_NoUnderscoreAfterDate_Success()
        {
            string imageFileName = TestingImagesNames.NoDateHint;

            string yearUnderscoreMonthAndDay = "1962_0629CanIgnore.jpg";

            File.Copy(imageFileName, yearUnderscoreMonthAndDay);
            var      dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthAndDay), new FileInfo(yearUnderscoreMonthAndDay));
            DateTime valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();

            Assert.AreEqual(new DateTime(1962, 6, 29), valueForDateTaken);

            string yearAndMonthUnderscoreDay = "196206_29CanIgnore.jpg";

            File.Copy(imageFileName, yearAndMonthUnderscoreDay);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearAndMonthUnderscoreDay), new FileInfo(yearAndMonthUnderscoreDay));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 6, 29), valueForDateTaken);

            string yearAndMonthUnderscoreAndBlahToIgnore = "196206CanIgnore.jpg";

            File.Copy(imageFileName, yearAndMonthUnderscoreAndBlahToIgnore);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearAndMonthUnderscoreAndBlahToIgnore), new FileInfo(yearAndMonthUnderscoreAndBlahToIgnore));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 6, 1), valueForDateTaken);

            string yearUnderscoreMonthAndDayBlahToIgnore = "2007_0922HeartOfScotland0014.JPG";

            File.Copy(imageFileName, yearUnderscoreMonthAndDayBlahToIgnore);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthAndDayBlahToIgnore), new FileInfo(yearUnderscoreMonthAndDayBlahToIgnore));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(2007, 9, 22), valueForDateTaken);

            string yearUnderscoreMonthAndBlahToIgnore = "1962_07CanIgnore.jpg";

            File.Copy(imageFileName, yearUnderscoreMonthAndBlahToIgnore);
            dateTakenCalculator = new ImageDateTakenCalculator(new ImageProperties(yearUnderscoreMonthAndBlahToIgnore), new FileInfo(yearUnderscoreMonthAndBlahToIgnore));
            valueForDateTaken   = dateTakenCalculator.GetValueForDateTaken();
            Assert.AreEqual(new DateTime(1962, 7, 1), valueForDateTaken);
        }