private static void Train_ErrorCreatingBuild(Assert assert)
        {
            var httpClient = new MockHttpClient();
            var engineDto  = new EngineDto
            {
                Id = "engine1"
            };

            httpClient.Requests.Add(new MockRequest
            {
                Method       = HttpRequestMethod.Get,
                Url          = "translation/engines/project:project1",
                ResponseText = JsonConvert.SerializeObject(engineDto, RestClientBase.SerializerSettings)
            });
            httpClient.Requests.Add(new MockRequest
            {
                Method      = HttpRequestMethod.Post,
                Url         = "translation/builds",
                ErrorStatus = 500
            });
            var    engine = new TranslationEngine("http://localhost/", "project1", httpClient);
            Action done   = assert.Async();

            engine.Train(
                progress => {},
                success =>
            {
                assert.Equal(success, false);
                done();
            });
        }
        private static void Train_NoErrors(Assert assert)
        {
            var httpClient = new MockHttpClient();
            var engineDto  = new EngineDto
            {
                Id = "engine1"
            };

            httpClient.Requests.Add(new MockRequest
            {
                Method       = HttpRequestMethod.Get,
                Url          = "translation/engines/project:project1",
                ResponseText = JsonConvert.SerializeObject(engineDto, RestClientBase.SerializerSettings)
            });
            var buildDto = new BuildDto
            {
                Id        = "build1",
                StepCount = 10
            };

            httpClient.Requests.Add(new MockRequest
            {
                Method       = HttpRequestMethod.Post,
                Url          = "translation/builds",
                ResponseText = JsonConvert.SerializeObject(buildDto, RestClientBase.SerializerSettings)
            });
            for (int i = 0; i < 10; i++)
            {
                buildDto.CurrentStep++;
                buildDto.Revision++;
                httpClient.Requests.Add(new MockRequest
                {
                    Method       = HttpRequestMethod.Get,
                    Url          = string.Format("translation/builds/engine:engine1?minRevision={0}", buildDto.Revision),
                    Action       = (body, ct) => Delay(10, ct),
                    ResponseText = JsonConvert.SerializeObject(buildDto, RestClientBase.SerializerSettings)
                });
            }
            var    engine       = new TranslationEngine("http://localhost/", "project1", httpClient);
            Action done         = assert.Async();
            int    expectedStep = -1;

            engine.Train(
                progress =>
            {
                expectedStep++;
                assert.Equal(progress.CurrentStep, expectedStep);
            },
                success =>
            {
                assert.Equal(expectedStep, 10);
                assert.Equal(success, true);
                done();
            });
        }