public async Task CopyLog_VerifyLogDataIsCopied()
        {
            const string logUid          = "";
            var          sourceReference = new LogReference
            {
                WellUid     = "",
                WellboreUid = "",
                LogUid      = logUid
            };
            var targetReference = new LogReference
            {
                WellUid     = "",
                WellboreUid = "",
                LogUid      = logUid
            };

            await deleteLogsWorker.Execute(new DeleteLogObjectsJob { LogReferences = targetReference.AsSingletonList <LogReference>().ToArray() });

            var job = new CopyLogJob
            {
                Source = sourceReference,
                Target = new WellboreReference
                {
                    WellUid     = targetReference.WellUid,
                    WellboreUid = targetReference.WellboreUid
                }
            };

            await worker.Execute(job);

            var sourceLog = await GetLog(sourceReference);

            var targetLog = await GetLog(targetReference);

            var currentIndex = Index.Start(sourceLog);
            var endIndex     = await GetEndIndex(targetReference);

            while (currentIndex != endIndex)
            {
                var sourceLogData = await logObjectService.ReadLogData(sourceReference.WellUid, sourceReference.WellboreUid, logUid,
                                                                       new List <string>(sourceLog.LogData.MnemonicList.Split(",")), currentIndex.Equals(Index.Start(sourceLog)),
                                                                       currentIndex.GetValueAsString(), endIndex.ToString());

                var targetLogData = await logObjectService.ReadLogData(targetReference.WellUid, targetReference.WellboreUid, logUid,
                                                                       new List <string>(targetLog.LogData.MnemonicList.Split(",")), currentIndex.Equals(Index.Start(targetLog)),
                                                                       currentIndex.GetValueAsString(), endIndex.ToString());

                Assert.Equal(sourceLogData.EndIndex, targetLogData.EndIndex);
                Assert.Equal(sourceLogData.CurveSpecifications.Count(), targetLogData.CurveSpecifications.Count());
                Assert.Equal(sourceLogData.Data.Count(), targetLogData.Data.Count());

                currentIndex = Index.End(sourceLog, sourceLogData.EndIndex);
            }
        }
        public async Task ReadLogData_TimeIndexed()
        {
            DateTime start       = DateTime.Now;
            var      wellUid     = "W-5232880";
            var      wellboreUid = "B-5232880";
            var      logUid      = "GM_Date_Time_GMTime";
            var      mnemonics   = new List <string> {
                "Time", "BLOCKPOS", "DEPTH_BIT", "DEPTH_HOLE"
            };

            var log = await logObjectService.GetLog(wellUid, wellboreUid, logUid);

            var logData = await logObjectService.ReadLogData(wellUid, wellboreUid, logUid, mnemonics, true, log.StartIndex, log.EndIndex);

            output.WriteLine($"Start: {logData.StartIndex}\tEnd: {logData.EndIndex}\tItems: {logData.Data.Count()}");
        }