public void GetDetailFor1Arg()
        {
            var reader = new FileDataReader(_fileData);

            var result = Assert.Throws <ArgumentException>(() => reader.GetDetail(new string[] { "-v" }));

            Assert.NotNull(result);
            Assert.Equal($"Two arguments must be provided: the first to define the mode, the second to specify the file.{Environment.NewLine}Arguments recieved: '-v'", result.Message);
        }
        public void GetDetailForValidSizeStrings(string detailTypeString)
        {
            var reader = new FileDataReader(_fileData);

            var result = reader.GetDetail(detailTypeString, "c:/test.txt");

            Assert.NotNull(result);
            Assert.NotEmpty(result);
            Assert.True(int.TryParse(result, out int size));    //the size string can be parsed as an int
        }
        public void GetDetailForInvalidStrings_argsArray(string detailTypeString)
        {
            var reader = new FileDataReader(_fileData);

            var result = Assert.Throws <ArgumentException>(() => reader.GetDetail(new string[] { detailTypeString, "c:/test.txt" }));

            Assert.NotNull(result);
            Assert.Contains(detailTypeString, result.Message);
            Assert.Equal($"'{detailTypeString}' is not a valid detail type argument.{Environment.NewLine}" +
                         $"Please use '-v' or '--version' as the first argument to read the file version or '-s' or '--size' as the first argument to read the file size.", result.Message);
        }
        public void GetDetailForValidVersionStrings_argsArray(string detailTypeString)
        {
            var reader = new FileDataReader(_fileData);

            var result = reader.GetDetail(new string[] { detailTypeString, "c:/test.txt" });

            Assert.NotNull(result);
            Assert.NotEmpty(result);
            var parts = result.Split('.');

            Assert.Equal(3, parts.Length);                               //there are three parts
            Assert.All(parts, p =>
                       Assert.True(int.TryParse(p, out int versionPart)) //each part can be parsed as an int.
                       );
        }