Exemplo n.º 1
0
        /// <inheritdoc/>
        public List <KeyValuePair <string, ITestCase> > BulkDeserialize(List <string> serializations)
        {
            var callbackContainer = new DeserializeCallback();
            Action <List <KeyValuePair <string, ITestCase> > > callback = callbackContainer.Callback;

            if (defaultTestCaseBulkDeserializer == null)
            {
                if (AppDomain.HasAppDomain)
                {
                    try
                    {
                        AppDomain.CreateObject <object>(TestFrameworkAssemblyName, "Xunit.Sdk.TestCaseBulkDeserializer", RemoteDiscoverer, remoteExecutor, serializations, callback);
                        if (callbackContainer.Results != null)
                        {
                            return(callbackContainer.Results);
                        }
                    }
                    catch (TypeLoadException) { }    // Only be willing to eat "Xunit.Sdk.TestCaseBulkDeserialize" doesn't exist
                }

                defaultTestCaseBulkDeserializer = new DefaultTestCaseBulkDeserializer(remoteExecutor);
            }

            return(defaultTestCaseBulkDeserializer.BulkDeserialize(serializations));
        }
        /// <summary>
        /// 从指定流反序列化数据。
        /// </summary>
        /// <param name="stream">指定流。</param>
        /// <returns>反序列化的数据。</returns>
        public T Deserialize(Stream stream)
        {
            using (BinaryReader binaryReader = new BinaryReader(stream, Encoding.UTF8))
            {
                byte[] header  = GetHeader();
                byte   header0 = binaryReader.ReadByte();
                byte   header1 = binaryReader.ReadByte();
                byte   header2 = binaryReader.ReadByte();
                if (header0 != header[0] || header1 != header[1] || header2 != header[2])
                {
                    throw new GameFrameworkException(Utility.Text.Format("Header is invalid, need '{0}{1}{2}', current '{3}{4}{5}'.",
                                                                         ((char)header[0]).ToString(), ((char)header[1]).ToString(), ((char)header[2]).ToString(),
                                                                         ((char)header0).ToString(), ((char)header1).ToString(), ((char)header2).ToString()));
                }

                byte version = binaryReader.ReadByte();
                DeserializeCallback callback = null;
                if (!m_DeserializeCallbacks.TryGetValue(version, out callback))
                {
                    throw new GameFrameworkException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version.ToString()));
                }

                return(callback(binaryReader));
            }
        }
Exemplo n.º 3
0
        List <KeyValuePair <string?, ITestCase?> > BulkDeserialize(List <string> serializations)
        {
            Guard.NotNull($"This instance of {typeof(Xunit2).FullName} was created for discovery only; execution-related operations cannot be performed.", remoteExecutor);

            var callbackContainer = new DeserializeCallback();
            Action <List <KeyValuePair <string?, ITestCase?> > > callback = callbackContainer.Callback;

            if (bulkDeserializer == null)
            {
                if (AppDomain.HasAppDomain)
                {
                    try
                    {
                        AppDomain.CreateObject <object>(TestFrameworkAssemblyName, "Xunit.Sdk.TestCaseBulkDeserializer", remoteDiscoverer, remoteExecutor, serializations, callback);
                        if (callbackContainer.Results != null)
                        {
                            return(callbackContainer.Results);
                        }
                    }
                    catch (TypeLoadException) { }                        // Only be willing to eat "Xunit.Sdk.TestCaseBulkDeserialize" doesn't exist
                }

                bulkDeserializer = new DefaultTestCaseBulkDeserializer(remoteExecutor);
            }

            return(bulkDeserializer.BulkDeserialize(serializations));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 注册反序列化回调函数。
        /// </summary>
        /// <param name="version">反序列化回调函数的版本。</param>
        /// <param name="callback">反序列化回调函数。</param>
        public void RegisterDeserializeCallback(byte version, DeserializeCallback callback)
        {
            if (callback == null)
            {
                throw new GXException("Deserialize callback is invalid.");
            }

            m_DeserializeCallbacks[version] = callback;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 从指定流反序列化数据。
        /// </summary>
        /// <param name="stream">指定流。</param>
        /// <returns>反序列化的数据。</returns>
        public T Deserialize(Stream stream)
        {
            using (BinaryReader binaryReader = new BinaryReader(stream, Encoding.UTF8))
            {
                byte[] header = GetHeader();
                if (binaryReader.ReadByte() != header[0] || binaryReader.ReadByte() != header[1] || binaryReader.ReadByte() != header[2])
                {
                    throw new GXException("Header is invalid.");
                }

                byte version = binaryReader.ReadByte();
                DeserializeCallback callback = null;
                if (!m_DeserializeCallbacks.TryGetValue(version, out callback))
                {
                    throw new GXException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version.ToString()));
                }

                return(callback(binaryReader));
            }
        }
        /// <summary>
        /// 从指定流反序列化数据。
        /// </summary>
        /// <param name="stream">指定流。</param>
        /// <returns>反序列化的数据。</returns>
        public T Deserialize(Stream stream)
        {
            byte[] header  = GetHeader();
            byte   header0 = (byte)stream.ReadByte();
            byte   header1 = (byte)stream.ReadByte();
            byte   header2 = (byte)stream.ReadByte();

            if (header0 != header[0] || header1 != header[1] || header2 != header[2])
            {
                throw new GameFrameworkException(Utility.Text.Format("Header is invalid, need '{0}{1}{2}', current '{3}{4}{5}'.", (char)header[0], (char)header[1], (char)header[2], (char)header0, (char)header1, (char)header2));
            }

            byte version = (byte)stream.ReadByte();
            DeserializeCallback callback = null;

            if (!m_DeserializeCallbacks.TryGetValue(version, out callback))
            {
                throw new GameFrameworkException(Utility.Text.Format("Deserialize callback '{0}' is not exist.", version));
            }

            return(callback(stream));
        }
Exemplo n.º 7
0
 public void AddLayoutDeserializeCallback(DeserializeCallback callback)
 {
     _layoutDeserializeCallback.Add(callback);
 }