//[TestMethod] public void SilverlightBasicTest() { // setup northwind database ServiceModelData modelData = ServiceModelData.Values[0]; using (TestWebRequest request = TestWebRequest.CreateForLocal()) { request.DataServiceType = modelData.ServiceModelType; request.StartService(); #region copy compiled binaries for Silverlight request string baseUri = request.BaseUri; Assert.IsTrue(baseUri.EndsWith(".svc", StringComparison.Ordinal)); string FileTargetPath = LocalWebServerHelper.FileTargetPath; Assert.IsTrue(!FileTargetPath.EndsWith("\\")); string SilverlightSrcPath = LocalWebServerHelper.BinarySourcePath + "\\Silverlight"; string ClientBinPath = FileTargetPath + "\\ClientBin"; string startPage = "Astoria.Silverlight.html"; string requestUri = baseUri.Substring(0, baseUri.LastIndexOf('/') + 1) + "ClientBin/" + startPage; string[] binariesToCopy = new string[] { // to ClientBinPath DataFxAssemblyRef.File.DataServicesClient, DataFxAssemblyRef.File.DataServicesClient.Replace(".dll", ".pdb"), "Astoria.Silverlight.UnitTests.dll", "Astoria.Silverlight.UnitTests.pdb", }; string[] pagesToCopy = new string[] { // to FileTargetPath "Astoria.Silverlight.xaml", startPage, startPage + ".js", "Silverlight.js", }; foreach (string file in binariesToCopy) { Assert.IsTrue(File.Exists(SilverlightSrcPath + "\\" + file), file); } foreach (string file in pagesToCopy) { Assert.IsTrue(File.Exists(SilverlightSrcPath + "\\" + file), file); } Directory.CreateDirectory(ClientBinPath); foreach (string file in binariesToCopy) { File.Copy( SilverlightSrcPath + "\\" + file, ClientBinPath + "\\" + file, /*overwrite*/true); } foreach (string binary in pagesToCopy) { File.Copy( SilverlightSrcPath + "\\" + binary, ClientBinPath + "\\" + binary, /*overwrite*/true); } #endregion string status = "missing"; Thread uiThread = new Thread(delegate(object o) { Form form = new Form(); form.Width = 640; form.Height = 480; WebBrowser browser = new WebBrowser(); browser.Width = form.Width; browser.Height = form.Height; form.Controls.Add(browser); browser.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; SilverlightExternal scriptingObject = new SilverlightExternal(); scriptingObject.TestCompletedEvent += delegate(object sender, TestCompletedEventArgs e) { status = e.Status; #if false Action action = delegate { form.Text = e.Status; }; form.Invoke(action); #else form.Close(); #endif }; browser.ObjectForScripting = scriptingObject; form.Load += delegate(object sender, EventArgs e) { browser.Url = new Uri(requestUri); form.BringToFront(); }; form.ShowDialog(); return; }); uiThread.SetApartmentState(ApartmentState.STA); uiThread.Start(); if (!uiThread.Join(new TimeSpan(0, 3, 0))) { status = "timeout"; } if (status != "test finished") { throw new Exception(status); } } }
//[TestMethod] public void SilverlightBasicTest() { // setup northwind database ServiceModelData modelData = ServiceModelData.Values[0]; using (TestWebRequest request = TestWebRequest.CreateForLocal()) { request.DataServiceType = modelData.ServiceModelType; request.StartService(); #region copy compiled binaries for Silverlight request string baseUri = request.BaseUri; Assert.IsTrue(baseUri.EndsWith(".svc", StringComparison.Ordinal)); string FileTargetPath = LocalWebServerHelper.FileTargetPath; Assert.IsTrue(!FileTargetPath.EndsWith("\\")); string SilverlightSrcPath = LocalWebServerHelper.BinarySourcePath + "\\Silverlight"; string ClientBinPath = FileTargetPath + "\\ClientBin"; string startPage = "Astoria.Silverlight.html"; string requestUri = baseUri.Substring(0, baseUri.LastIndexOf('/') + 1) + "ClientBin/" + startPage; string[] binariesToCopy = new string[] { // to ClientBinPath DataFxAssemblyRef.File.DataServicesClient, DataFxAssemblyRef.File.DataServicesClient.Replace(".dll", ".pdb"), "Astoria.Silverlight.UnitTests.dll", "Astoria.Silverlight.UnitTests.pdb", }; string[] pagesToCopy = new string[] { // to FileTargetPath "Astoria.Silverlight.xaml", startPage, startPage + ".js", "Silverlight.js", }; foreach (string file in binariesToCopy) { Assert.IsTrue(File.Exists(SilverlightSrcPath + "\\" + file), file); } foreach (string file in pagesToCopy) { Assert.IsTrue(File.Exists(SilverlightSrcPath + "\\" + file), file); } Directory.CreateDirectory(ClientBinPath); foreach (string file in binariesToCopy) { File.Copy( SilverlightSrcPath + "\\" + file, ClientBinPath + "\\" + file, /*overwrite*/ true); } foreach (string binary in pagesToCopy) { File.Copy( SilverlightSrcPath + "\\" + binary, ClientBinPath + "\\" + binary, /*overwrite*/ true); } #endregion string status = "missing"; Thread uiThread = new Thread(delegate(object o) { Form form = new Form(); form.Width = 640; form.Height = 480; WebBrowser browser = new WebBrowser(); browser.Width = form.Width; browser.Height = form.Height; form.Controls.Add(browser); browser.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; SilverlightExternal scriptingObject = new SilverlightExternal(); scriptingObject.TestCompletedEvent += delegate(object sender, TestCompletedEventArgs e) { status = e.Status; #if false Action action = delegate { form.Text = e.Status; }; form.Invoke(action); #else form.Close(); #endif }; browser.ObjectForScripting = scriptingObject; form.Load += delegate(object sender, EventArgs e) { browser.Url = new Uri(requestUri); form.BringToFront(); }; form.ShowDialog(); return; }); uiThread.SetApartmentState(ApartmentState.STA); uiThread.Start(); if (!uiThread.Join(new TimeSpan(0, 3, 0))) { status = "timeout"; } if (status != "test finished") { throw new Exception(status); } } }