public void CopyFrom(HttpListenerResponse templateResponse) { headers.Clear(); headers.Add(templateResponse.headers); content_length = templateResponse.content_length; status_code = templateResponse.status_code; status_description = templateResponse.status_description; keep_alive = templateResponse.keep_alive; version = templateResponse.version; }
public void FindStreamTest() { // モックの設定 var factory = new MockWebClientFactory(); var mock = factory.MockClient; mock.Setup(client => client.DownloadString("http://livetube.cc/hakusai/somesbroadcast")).Returns("<html>\r\nvar comment_entry_id = \"somestreamid\";\r\n</html>\r\n"); WebHeaderCollection reqHead = new WebHeaderCollection(); mock.Setup(client => client.Headers).Returns(reqHead); WebHeaderCollection resHead = new WebHeaderCollection(); resHead.Add("Set-Cookie", "SomeCookie"); mock.Setup(client => client.ResponseHeaders).Returns(resHead); // 実際の呼び出し LivetubeClient livetube = new LivetubeClient(factory); Assert.True(livetube.Login("hakusai", "password")); reqHead.Clear(); resHead.Clear(); Assert.AreEqual("somestreamid", livetube.FindStream("http://livetube.cc/hakusai/somesbroadcast")); reqHead.Clear(); resHead.Clear(); livetube.Logoff(); // 結果の確認 Assert.AreEqual("SomeCookie", reqHead["Cookie"]); mock.Verify(client => client.DownloadString("http://livetube.cc/logoff")); livetube.Dispose(); }
public void PostCommentTest() { // モックの設定 var factory = new MockWebClientFactory(); var mock = factory.MockClient; mock.Setup(client => client.DownloadString("http://livetube.cc/hakusai/somesbroadcast")).Returns("<html>\r\nvar comment_entry_id = \"somestreamid\";\r\n</html>\r\n"); WebHeaderCollection reqHead = new WebHeaderCollection(); mock.Setup(client => client.Headers).Returns(reqHead); WebHeaderCollection resHead = new WebHeaderCollection(); resHead.Add("Set-Cookie", "SomeCookie"); mock.Setup(client => client.ResponseHeaders).Returns(resHead); // 実際の呼び出し LivetubeClient livetube = new LivetubeClient(factory); Assert.True(livetube.Login("hakusai", "password")); reqHead.Clear(); resHead.Clear(); var streamid = livetube.FindStream("http://livetube.cc/hakusai/somesbroadcast"); reqHead.Clear(); resHead.Clear(); livetube.PostComment(streamid, "hakusai", "コメント"); // 結果の確認 Assert.AreEqual("application/x-www-form-urlencoded", reqHead["Content-Type"]); Assert.AreEqual("SomeCookie", reqHead["Cookie"]); byte[] bytes = Encoding.ASCII.GetBytes("name=hakusai&c=%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88"); mock.Verify(client => client.UploadData("http://livetube.cc/stream/somestreamid.comments", "POST", bytes)); reqHead.Clear(); resHead.Clear(); livetube.Logoff(); livetube.Dispose(); }
public void LogoffTest() { // モックの設定 var factory = new MockWebClientFactory(); var mock = factory.MockClient; WebHeaderCollection reqHead = new WebHeaderCollection(); mock.Setup(client => client.Headers).Returns(reqHead); WebHeaderCollection resHead = new WebHeaderCollection(); resHead.Add("Set-Cookie", "SomeCookie"); mock.Setup(client => client.ResponseHeaders).Returns(resHead); // 実際の呼び出し LivetubeClient livetube = new LivetubeClient(factory); Assert.True(livetube.Login("hakusai", "password")); reqHead.Clear(); resHead.Clear(); livetube.Logoff(); // 結果の確認 Assert.AreEqual("SomeCookie", reqHead["Cookie"]); mock.Verify(client => client.DownloadString("http://livetube.cc/logoff")); livetube.Dispose(); }
public void LoginTest2_twice() { // モックの設定 var factory = new MockWebClientFactory(); var mock = factory.MockClient; WebHeaderCollection reqHead = new WebHeaderCollection(); mock.Setup(client => client.Headers).Returns(reqHead); WebHeaderCollection resHead = new WebHeaderCollection(); resHead.Add("Set-Cookie", "SomeCookie"); mock.Setup(client => client.ResponseHeaders).Returns(resHead); // 実際の呼び出し LivetubeClient livetube = new LivetubeClient(factory); Assert.True(livetube.Login("hakusai", "password")); reqHead.Clear(); resHead.Add("Set-Cookie", "SomeCookie"); Assert.True(livetube.Login("hakusai", "password")); // 結果の確認 Assert.AreEqual("application/x-www-form-urlencoded", reqHead["Content-Type"]); byte[] bytes = Encoding.ASCII.GetBytes("user=hakusai&password=password"); mock.Verify(client => client.UploadData("http://livetube.cc/login", "POST", bytes)); mock.Verify(client => client.DownloadString("http://livetube.cc/logoff")); livetube.Dispose(); }
static long MeasureFastReflectionPaths() { const int iterations = 1000000; long ran = 0; var sourceMethod = typeof(WebHeaderCollection).GetMethod("AddInternal", BindingFlags.NonPublic | BindingFlags.Instance); var @delegate = (AddHeaderDelegate) Delegate.CreateDelegate(typeof(AddHeaderDelegate), sourceMethod); var instanceExpression = Expression.Parameter(typeof(WebHeaderCollection)); var nameParamExpression = Expression.Parameter(typeof(string)); var valueParamExpression = Expression.Parameter(typeof(string)); var methodCallExpression = Expression.Call(instanceExpression, sourceMethod, nameParamExpression, valueParamExpression); var lambda = Expression.Lambda<AddHeaderDelegate>(methodCallExpression, new[] { instanceExpression, nameParamExpression, valueParamExpression }); var expression = lambda.Compile(); var method = new DynamicMethod( "", null, new[] {typeof(WebHeaderCollection), typeof(string), typeof(string)}, typeof(Program), true); var ilGenerator = method.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldarg_0); ilGenerator.Emit(OpCodes.Ldarg_1); ilGenerator.Emit(OpCodes.Ldarg_2); ilGenerator.Emit(OpCodes.Callvirt, sourceMethod); ilGenerator.Emit(OpCodes.Ret); var dynamicDelegate = (AddHeaderDelegate) method.CreateDelegate(typeof(AddHeaderDelegate)); var whc = new WebHeaderCollection(); CodeTimer.Time(true, "delegate", iterations, () => { @delegate(whc, "test", "abc"); @delegate(whc, "test2", "abc1"); @delegate(whc, "test3", "abc2"); @delegate(whc, "test4", "abc3"); @delegate(whc, "test5", "abc4"); @delegate(whc, "test6", "abc5"); whc.Clear(); }); CodeTimer.Time(true, "expression", iterations, () => { expression(whc, "test", "abc"); expression(whc, "test2", "abc1"); expression(whc, "test3", "abc2"); expression(whc, "test4", "abc3"); expression(whc, "test5", "abc4"); expression(whc, "test6", "abc5"); whc.Clear(); }); CodeTimer.Time(true, "delegate", iterations, () => { dynamicDelegate(whc, "test", "abc"); dynamicDelegate(whc, "test2", "abc1"); dynamicDelegate(whc, "test3", "abc2"); dynamicDelegate(whc, "test4", "abc3"); dynamicDelegate(whc, "test5", "abc4"); dynamicDelegate(whc, "test6", "abc5"); whc.Clear(); }); return ran; }