Ejemplo n.º 1
0
    private void CreateFileList()
    {
        JsonObject fileListJo = new JsonObject();

        string     manifestPath   = OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.MANIFEST_NAME + "." + ConstValue.ASSET_BUNDLE_VARIANT;
        FileInfo   manifestFile   = new FileInfo(manifestPath);
        JsonObject manifestInfoJo = new JsonObject();

        manifestInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, manifestFile.Length);
        manifestInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, GetMd5(manifestFile));
        fileListJo.Add(mModuleName.ToLower() + "/" + ConstValue.MANIFEST_NAME + "." + ConstValue.ASSET_BUNDLE_VARIANT, manifestInfoJo);

        AssetBundle manifestAssetBundle = AssetBundle.LoadFromFile(manifestPath);

        if (manifestAssetBundle)
        {
            AssetBundleManifest manifest = manifestAssetBundle.LoadAsset <AssetBundleManifest>("AssetBundleManifest");
            if (manifest)
            {
                foreach (string bundleName in manifest.GetAllAssetBundles())
                {
                    FileInfo file = new FileInfo(OUTPUT_PATH + "/" + bundleName);

                    JsonObject fileInfoJo = new JsonObject();
                    fileInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, file.Exists ? file.Length : 0);
                    fileInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, file.Exists ? GetMd5(file) : "");

                    fileListJo.Add(bundleName, fileInfoJo);
                }
            }
            manifestAssetBundle.Unload(true);
        }
        foreach (string copyDir in s_CopyDirs)
        {
            DirectoryInfo   dir      = new DirectoryInfo(OUTPUT_PATH + "/" + mModuleName + "/" + copyDir);
            List <FileInfo> fileList = dir.Exists ? GetAllFiles(dir, ".", ".meta") : new List <FileInfo>();
            foreach (FileInfo file in fileList)
            {
                JsonObject fileInfoJo = new JsonObject();
                fileInfoJo.Add(ConstValue.FILE_LIST_SIZE_KEY, file.Exists ? file.Length : 0);
                fileInfoJo.Add(ConstValue.FILE_LIST_MD5_KEY, file.Exists ? GetMd5(file) : "");

                string relativePath = copyDir + "/" + file.FullName.Substring(dir.FullName.Length + 1).Replace("\\", "/");
                fileListJo.Add(relativePath, fileInfoJo);
            }
        }

        string fileListStr = ToFileListString(fileListJo);

        byte[] fileListBytes = ConvertExt.StringToBytes(fileListStr);
        FileManager.Write(OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.FILE_LIST_NAME, fileListBytes);

        m_AssetsChanged = true;
    }
Ejemplo n.º 2
0
    private void CreateVersion()
    {
        JsonObject versionInfoJo = new JsonObject();

        versionInfoJo.Add(ConstValue.MODULE_KEY, mModuleName);
        versionInfoJo.Add(ConstValue.VERSION_KEY, ConstValue.VERSION);
        byte[] versionInfoBytes = ConvertExt.StringToBytes(versionInfoJo.ToString());
        FileManager.Write(OUTPUT_PATH + "/" + mModuleName + "/" + ConstValue.VERSION_NAME, versionInfoBytes);

        m_AssetsChanged = true;
    }
Ejemplo n.º 3
0
 public void TestToByte()
 {
     Assert.AreEqual(0, ConvertExt.ToByte("0", 13));
     Assert.AreEqual(1, ConvertExt.ToByte("1", 3));
     Assert.AreEqual(120, ConvertExt.ToByte("60", 20));
     Assert.AreEqual(127, ConvertExt.ToByte("9a", 13));
     Assert.AreEqual(128, ConvertExt.ToByte("4c", 29));
     Assert.AreEqual(166, ConvertExt.ToByte("4m", 36));
     Assert.AreEqual(254, ConvertExt.ToByte("9b", 27));
     Assert.AreEqual(255, ConvertExt.ToByte("9c", 27));
     AssertExt.ThrowsException(() => ConvertExt.ToByte("38o7", 27), typeof(OverflowException));
 }
Ejemplo n.º 4
0
 public void TestToInt64()
 {
     Assert.AreEqual(0L, ConvertExt.ToInt64("0", 13));
     Assert.AreEqual(1L, ConvertExt.ToInt64("1", 3));
     Assert.AreEqual(14720L, ConvertExt.ToInt64("1Gg0", 20));
     Assert.AreEqual(9223372036854775807L, ConvertExt.ToInt64("10B269549075433C37", 13));
     Assert.AreEqual(-1L, ConvertExt.ToInt64("4Eo8hfam6fllmo", 27));
     Assert.AreEqual(-2L, ConvertExt.ToInt64("4Eo8hfam6fllmn", 27));
     Assert.AreEqual(-8071017880399937603L, ConvertExt.ToInt64("26tvjyybszf7h", 36));
     Assert.AreEqual(-9223372036854775808L, ConvertExt.ToInt64("q1se8f0m04isc", 29));
     AssertExt.ThrowsException(() => ConvertExt.ToInt64("4Eo8hfam6fllmp", 27), typeof(OverflowException));
 }
Ejemplo n.º 5
0
 public void TestToInt32()
 {
     Assert.AreEqual(0, ConvertExt.ToInt32("0", 13));
     Assert.AreEqual(1, ConvertExt.ToInt32("1", 3));
     Assert.AreEqual(14720, ConvertExt.ToInt32("1Gg0", 20));
     Assert.AreEqual(2147483647, ConvertExt.ToInt32("282ba4aaa", 13));
     Assert.AreEqual(-1, ConvertExt.ToInt32("b28jpdl", 27));
     Assert.AreEqual(-2, ConvertExt.ToInt32("b28jpdk", 27));
     Assert.AreEqual(-1235678902, ConvertExt.ToInt32("1elf616", 36));
     Assert.AreEqual(-2147483648, ConvertExt.ToInt32("3hk7988", 29));
     AssertExt.ThrowsException(() => ConvertExt.ToInt32("b28jpdm", 27), typeof(OverflowException));
 }
Ejemplo n.º 6
0
 public void TestToInt16()
 {
     Assert.AreEqual(0, ConvertExt.ToInt16("0", 13));
     Assert.AreEqual(1, ConvertExt.ToInt16("1", 3));
     Assert.AreEqual(14720, ConvertExt.ToInt16("1Gg0", 20));
     Assert.AreEqual(32767, ConvertExt.ToInt16("11bb7", 13));
     Assert.AreEqual(-1, ConvertExt.ToInt16("38o6", 27));
     Assert.AreEqual(-2, ConvertExt.ToInt16("38o5", 27));
     Assert.AreEqual(-21458, ConvertExt.ToInt16("y0e", 36));
     Assert.AreEqual(-32768, ConvertExt.ToInt16("19rr", 29));
     AssertExt.ThrowsException(() => ConvertExt.ToInt16("38o7", 27), typeof(OverflowException));
 }
Ejemplo n.º 7
0
 public void TestToUInt64()
 {
     Assert.AreEqual(0UL, ConvertExt.ToUInt64("0", 13));
     Assert.AreEqual(1UL, ConvertExt.ToUInt64("1", 3));
     Assert.AreEqual(14720UL, ConvertExt.ToUInt64("1Gg0", 20));
     Assert.AreEqual(9223372036854775807UL, ConvertExt.ToUInt64("10B269549075433C37", 13));
     Assert.AreEqual(9223372036854775808UL, ConvertExt.ToUInt64("q1se8f0m04isc", 29));
     Assert.AreEqual(10375726193309614013UL, ConvertExt.ToUInt64("26tvjyybszf7h", 36));
     Assert.AreEqual(18446744073709551614UL, ConvertExt.ToUInt64("4Eo8hfam6fllmn", 27));
     Assert.AreEqual(18446744073709551615UL, ConvertExt.ToUInt64("4Eo8hfam6fllmo", 27));
     AssertExt.ThrowsException(() => ConvertExt.ToUInt64("4Eo8hfam6fllmp", 27), typeof(OverflowException));
 }
Ejemplo n.º 8
0
 public void TestToUInt32()
 {
     Assert.AreEqual(0U, ConvertExt.ToUInt32("0", 13));
     Assert.AreEqual(1U, ConvertExt.ToUInt32("1", 3));
     Assert.AreEqual(14720U, ConvertExt.ToUInt32("1Gg0", 20));
     Assert.AreEqual(2147483647U, ConvertExt.ToUInt32("282ba4aaa", 13));
     Assert.AreEqual(2147483648U, ConvertExt.ToUInt32("3hk7988", 29));
     Assert.AreEqual(3059288394U, ConvertExt.ToUInt32("1elf616", 36));
     Assert.AreEqual(4294967294U, ConvertExt.ToUInt32("b28jpdk", 27));
     Assert.AreEqual(4294967295U, ConvertExt.ToUInt32("b28jpdl", 27));
     AssertExt.ThrowsException(() => ConvertExt.ToUInt32("b28jpdm", 27), typeof(OverflowException));
 }
Ejemplo n.º 9
0
    bool ExportVersion(string moduleName)
    {
        int streamingHotVersion = 0;
        int cdnHotVersion       = 0;

        if (FileManager.IsFileExist(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME))
        {
            byte[] streamingVersionBytes = FileManager.Read(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME);
            string streamingVersionStr   = streamingVersionBytes == null ? null : ConvertExt.BytesToString(streamingVersionBytes);
            //Debug.LogError("streamingVersionStr = " + streamingVersionStr);

            JsonObject streamingVersionInfoJo = StringParser.StringToJo(streamingVersionStr, false);
            m_streamingVersion = JsonParser.JoItemToString(streamingVersionInfoJo, ConstValue.VERSION_KEY, ConstValue.VERSION);
            //Debug.LogError("streaming version: " + m_streamingVersion);
            string[] streamingVersions = m_streamingVersion.Split('.');
            streamingHotVersion = StringParser.StringToInt(streamingVersions[2]);
        }
        else
        {
            return(false);
        }

        if (FileManager.IsFileExist(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME))
        {
            byte[] cdnVersionBytes = FileManager.Read(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME);
            string cdnVersionStr   = cdnVersionBytes == null ? null : ConvertExt.BytesToString(cdnVersionBytes);
            //Debug.LogError("cdnVersionStr = " + cdnVersionStr);

            JsonObject cdnVersionInfoJo = StringParser.StringToJo(cdnVersionStr, false);
            m_CdnVersion = JsonParser.JoItemToString(cdnVersionInfoJo, ConstValue.VERSION_KEY, ConstValue.VERSION);
            //Debug.LogError("Cdn version: " + m_CdnVersion);
            string[] cdnVersions = m_CdnVersion.Split('.');
            cdnHotVersion = StringParser.StringToInt(cdnVersions[2]);
        }
        else
        {
            return(false);
        }

        if (streamingHotVersion <= cdnHotVersion)
        {
            return(false);
        }

        FileCopyTo(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.VERSION_NAME,
                   m_PackagePath + "/" + moduleName + "/" + ConstValue.VERSION_NAME);

        return(true);
    }
Ejemplo n.º 10
0
    void ExportAssetBundles(string moduleName)
    {
        if (FileManager.IsFileExist(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME))
        {
            byte[] streamingFileListBytes = FileManager.Read(ConstValue.STREAMING_DIR_PATH + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME);
            string streamingFileListStr   = streamingFileListBytes == null ? null : ConvertExt.BytesToString(streamingFileListBytes);
            m_StreamingFileList = StringParser.StringToJo(streamingFileListStr, false);
        }
        else
        {
            m_StreamingFileList = new JsonObject();
        }

        if (FileManager.IsFileExist(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME))
        {
            byte[] cdnFileListBytes = FileManager.Read(m_CdnNativePath + "/" + moduleName + "/" + ConstValue.FILE_LIST_NAME);
            string cdnFileListStr   = cdnFileListBytes == null ? null : ConvertExt.BytesToString(cdnFileListBytes);
            m_CdnFileList = StringParser.StringToJo(cdnFileListStr, false);
        }
        else
        {
            m_CdnFileList = new JsonObject();
        }

        foreach (string fileName in m_StreamingFileList.Keys)
        {
            string     srcPath         = ConstValue.STREAMING_DIR_PATH + "/" + fileName;
            string     destPath        = m_PackagePath + "/" + fileName;
            JsonObject streamingInfoJo = JsonParser.JoItemToJo(m_StreamingFileList, fileName);
            string     streamingMd5    = JsonParser.JoItemToString(streamingInfoJo, ConstValue.FILE_LIST_MD5_KEY);
            if (m_CdnFileList.ContainsKey(fileName))
            {
                JsonObject cdnInfoJo = JsonParser.JoItemToJo(m_CdnFileList, fileName);
                string     cdnMd5    = JsonParser.JoItemToString(cdnInfoJo, ConstValue.FILE_LIST_MD5_KEY);
                if (!string.Equals(streamingMd5, cdnMd5))
                {
                    FileCopyTo(srcPath, destPath);
                }
            }
            else
            {
                FileCopyTo(srcPath, destPath);
            }
        }
        AssetDatabase.Refresh();
    }
Ejemplo n.º 11
0
        public void TestToInt64()
        {
            Assert.AreEqual(0L, ConvertExt.ToInt64("0", 13));
            Assert.AreEqual(1L, ConvertExt.ToInt64("1", 3));
            Assert.AreEqual(14720L, ConvertExt.ToInt64("1Gg0", 20));
            Assert.AreEqual(9223372036854775807L, ConvertExt.ToInt64("10B269549075433C37", 13));
            Assert.AreEqual(-1L, ConvertExt.ToInt64("4Eo8hfam6fllmo", 27));
            Assert.AreEqual(-2L, ConvertExt.ToInt64("4Eo8hfam6fllmn", 27));
            Assert.AreEqual(-8071017880399937603L, ConvertExt.ToInt64("26tvjyybszf7h", 36));
            Assert.AreEqual(-9223372036854775808L, ConvertExt.ToInt64("q1se8f0m04isc", 29));
            bool hasException = false;

            try
            {
                ConvertExt.ToInt64("4Eo8hfam6fllmp", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
Ejemplo n.º 12
0
        public void TestToInt32()
        {
            Assert.AreEqual(0, ConvertExt.ToInt32("0", 13));
            Assert.AreEqual(1, ConvertExt.ToInt32("1", 3));
            Assert.AreEqual(14720, ConvertExt.ToInt32("1Gg0", 20));
            Assert.AreEqual(2147483647, ConvertExt.ToInt32("282ba4aaa", 13));
            Assert.AreEqual(-1, ConvertExt.ToInt32("b28jpdl", 27));
            Assert.AreEqual(-2, ConvertExt.ToInt32("b28jpdk", 27));
            Assert.AreEqual(-1235678902, ConvertExt.ToInt32("1elf616", 36));
            Assert.AreEqual(-2147483648, ConvertExt.ToInt32("3hk7988", 29));
            bool hasException = false;

            try
            {
                ConvertExt.ToInt32("b28jpdm", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
Ejemplo n.º 13
0
        public void TestToInt16()
        {
            Assert.AreEqual(0, ConvertExt.ToInt16("0", 13));
            Assert.AreEqual(1, ConvertExt.ToInt16("1", 3));
            Assert.AreEqual(14720, ConvertExt.ToInt16("1Gg0", 20));
            Assert.AreEqual(32767, ConvertExt.ToInt16("11bb7", 13));
            Assert.AreEqual(-1, ConvertExt.ToInt16("38o6", 27));
            Assert.AreEqual(-2, ConvertExt.ToInt16("38o5", 27));
            Assert.AreEqual(-21458, ConvertExt.ToInt16("y0e", 36));
            Assert.AreEqual(-32768, ConvertExt.ToInt16("19rr", 29));
            bool hasException = false;

            try
            {
                ConvertExt.ToInt16("38o7", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
Ejemplo n.º 14
0
        public void TestToUInt64()
        {
            Assert.AreEqual(0UL, ConvertExt.ToUInt64("0", 13));
            Assert.AreEqual(1UL, ConvertExt.ToUInt64("1", 3));
            Assert.AreEqual(14720UL, ConvertExt.ToUInt64("1Gg0", 20));
            Assert.AreEqual(9223372036854775807UL, ConvertExt.ToUInt64("10B269549075433C37", 13));
            Assert.AreEqual(9223372036854775808UL, ConvertExt.ToUInt64("q1se8f0m04isc", 29));
            Assert.AreEqual(10375726193309614013UL, ConvertExt.ToUInt64("26tvjyybszf7h", 36));
            Assert.AreEqual(18446744073709551614UL, ConvertExt.ToUInt64("4Eo8hfam6fllmn", 27));
            Assert.AreEqual(18446744073709551615UL, ConvertExt.ToUInt64("4Eo8hfam6fllmo", 27));
            bool hasException = false;

            try
            {
                ConvertExt.ToUInt64("4Eo8hfam6fllmp", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
Ejemplo n.º 15
0
        public void TestToUInt32()
        {
            Assert.AreEqual(0U, ConvertExt.ToUInt32("0", 13));
            Assert.AreEqual(1U, ConvertExt.ToUInt32("1", 3));
            Assert.AreEqual(14720U, ConvertExt.ToUInt32("1Gg0", 20));
            Assert.AreEqual(2147483647U, ConvertExt.ToUInt32("282ba4aaa", 13));
            Assert.AreEqual(2147483648U, ConvertExt.ToUInt32("3hk7988", 29));
            Assert.AreEqual(3059288394U, ConvertExt.ToUInt32("1elf616", 36));
            Assert.AreEqual(4294967294U, ConvertExt.ToUInt32("b28jpdk", 27));
            Assert.AreEqual(4294967295U, ConvertExt.ToUInt32("b28jpdl", 27));
            bool hasException = false;

            try
            {
                ConvertExt.ToUInt32("b28jpdm", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
Ejemplo n.º 16
0
        public void TestToSByte()
        {
            Assert.AreEqual(0, ConvertExt.ToSByte("0", 13));
            Assert.AreEqual(1, ConvertExt.ToSByte("1", 3));
            Assert.AreEqual(120, ConvertExt.ToSByte("60", 20));
            Assert.AreEqual(127, ConvertExt.ToSByte("9a", 13));
            Assert.AreEqual(-1, ConvertExt.ToSByte("9c", 27));
            Assert.AreEqual(-2, ConvertExt.ToSByte("9b", 27));
            Assert.AreEqual(-90, ConvertExt.ToSByte("4m", 36));
            Assert.AreEqual(-128, ConvertExt.ToSByte("4c", 29));
            bool hasException = false;

            try
            {
                ConvertExt.ToSByte("38o7", 27);
            }
            catch (OverflowException)
            {
                hasException = true;
            }
            Assert.IsTrue(hasException, "没有正确引发 OverflowException。");
        }
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        Rect colorFieldPos = new Rect(position.x, position.y, position.width - mLabelWidth, position.height);

        EditorGUI.PropertyField(colorFieldPos, property, label, true);

        GUI.SetNextControlName("Encoded Color");
        Rect stringFieldPos = new Rect(position.x + position.width - mLabelWidth, position.y, mLabelWidth, position.height);

        mEncodedColor = EditorGUI.TextField(stringFieldPos, "", mEncodedColor);
        if (GUI.GetNameOfFocusedControl() == "Encoded Color")
        {
            if (Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.Used)
            {
                property.colorValue = ConvertExt.ParseColor24(mEncodedColor, 0);
            }
        }
        else
        {
            mEncodedColor = ConvertExt.EncodeColor24(property.colorValue);
        }
    }
Ejemplo n.º 18
0
        public void TestToString()
        {
            // 对转换 SByte 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString((sbyte)0, 13));
            Assert.AreEqual("1", ConvertExt.ToString((sbyte)1, 3));
            Assert.AreEqual("60", ConvertExt.ToString((sbyte)120, 20));
            Assert.AreEqual("9A", ConvertExt.ToString((sbyte)127, 13));
            Assert.AreEqual("9C", ConvertExt.ToString((sbyte)-1, 27));
            Assert.AreEqual("-2", ConvertExt.ToString((sbyte)-2, 10));
            Assert.AreEqual("4M", ConvertExt.ToString((sbyte)-90, 36));
            Assert.AreEqual("4C", ConvertExt.ToString((sbyte)-128, 29));

            // 对转换 Int16 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString((short)0, 13));
            Assert.AreEqual("1", ConvertExt.ToString((short)1, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString((short)14720, 20));
            Assert.AreEqual("11BB7", ConvertExt.ToString((short)32767, 13));
            Assert.AreEqual("38O6", ConvertExt.ToString((short)-1, 27));
            Assert.AreEqual("-2", ConvertExt.ToString((short)-2, 10));
            Assert.AreEqual("Y0E", ConvertExt.ToString((short)-21458, 36));
            Assert.AreEqual("19RR", ConvertExt.ToString((short)-32768, 29));

            // 对转换 Int32 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString(0, 13));
            Assert.AreEqual("1", ConvertExt.ToString(1, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString(14720, 20));
            Assert.AreEqual("282BA4AAA", ConvertExt.ToString(2147483647, 13));
            Assert.AreEqual("B28JPDL", ConvertExt.ToString(-1, 27));
            Assert.AreEqual("-2", ConvertExt.ToString(-2, 10));
            Assert.AreEqual("1ELF616", ConvertExt.ToString(-1235678902, 36));
            Assert.AreEqual("3HK7988", ConvertExt.ToString(-2147483648, 29));

            // 对转换 Int64 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString(0L, 13));
            Assert.AreEqual("1", ConvertExt.ToString(1L, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString(14720L, 20));
            Assert.AreEqual("10B269549075433C37", ConvertExt.ToString(9223372036854775807L, 13));
            Assert.AreEqual("4EO8HFAM6FLLMO", ConvertExt.ToString(-1L, 27));
            Assert.AreEqual("-2", ConvertExt.ToString(-2L, 10));
            Assert.AreEqual("26TVJYYBSZF7H", ConvertExt.ToString(-8071017880399937603L, 36));
            Assert.AreEqual("Q1SE8F0M04ISC", ConvertExt.ToString(-9223372036854775808L, 29));

            // 对转换 Byte 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString((byte)0, 13));
            Assert.AreEqual("1", ConvertExt.ToString((byte)1, 3));
            Assert.AreEqual("60", ConvertExt.ToString((byte)120, 20));
            Assert.AreEqual("9A", ConvertExt.ToString((byte)127, 13));
            Assert.AreEqual("4C", ConvertExt.ToString((byte)128, 29));
            Assert.AreEqual("4M", ConvertExt.ToString((byte)166, 36));
            Assert.AreEqual("254", ConvertExt.ToString((byte)254, 10));
            Assert.AreEqual("9C", ConvertExt.ToString((byte)255, 27));

            // 对转换 UInt16 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString((ushort)0, 13));
            Assert.AreEqual("1", ConvertExt.ToString((ushort)1, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString((ushort)14720, 20));
            Assert.AreEqual("11BB7", ConvertExt.ToString((ushort)32767, 13));
            Assert.AreEqual("19RR", ConvertExt.ToString((ushort)32768, 29));
            Assert.AreEqual("Y0E", ConvertExt.ToString((ushort)44078, 36));
            Assert.AreEqual("65534", ConvertExt.ToString((ushort)65534, 10));
            Assert.AreEqual("38O6", ConvertExt.ToString((ushort)65535, 27));

            // 对转换 UInt32 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString(0U, 13));
            Assert.AreEqual("1", ConvertExt.ToString(1U, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString(14720U, 20));
            Assert.AreEqual("282BA4AAA", ConvertExt.ToString(2147483647U, 13));
            Assert.AreEqual("3HK7988", ConvertExt.ToString(2147483648U, 29));
            Assert.AreEqual("1ELF616", ConvertExt.ToString(3059288394U, 36));
            Assert.AreEqual("4294967294", ConvertExt.ToString(4294967294U, 10));
            Assert.AreEqual("B28JPDL", ConvertExt.ToString(4294967295U, 27));

            // 对转换 UInt64 进行测试。
            Assert.AreEqual("0", ConvertExt.ToString(0U, 13));
            Assert.AreEqual("1", ConvertExt.ToString(1U, 3));
            Assert.AreEqual("1GG0", ConvertExt.ToString(14720U, 20));
            Assert.AreEqual("10B269549075433C37", ConvertExt.ToString(9223372036854775807UL, 13));
            Assert.AreEqual("Q1SE8F0M04ISC", ConvertExt.ToString(9223372036854775808UL, 29));
            Assert.AreEqual("26TVJYYBSZF7H", ConvertExt.ToString(10375726193309614013UL, 36));
            Assert.AreEqual("18446744073709551614", ConvertExt.ToString(18446744073709551614UL, 10));
            Assert.AreEqual("4EO8HFAM6FLLMO", ConvertExt.ToString(18446744073709551615UL, 27));
        }
Ejemplo n.º 19
0
    /// <summary>
    /// Convert type of cell value to its predefined type which is specified in the sheet's ScriptMachine setting file.
    /// </summary>
    protected object ConvertFrom(ICell cell, Type t)
    {
        object value = null;

        if (t == typeof(float) || t == typeof(double) || t == typeof(short) || t == typeof(int) || t == typeof(long))
        {
            if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
            {
                value = cell.NumericCellValue;
            }
            else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
            {
                //Get correct numeric value even the cell is string type but defined with a numeric type in a data class.
                if (t == typeof(float))
                {
                    value = Convert.ToSingle(cell.StringCellValue);
                }
                if (t == typeof(double))
                {
                    value = Convert.ToDouble(cell.StringCellValue);
                }
                if (t == typeof(short))
                {
                    value = Convert.ToInt16(cell.StringCellValue);
                }
                if (t == typeof(int))
                {
                    value = Convert.ToInt32(cell.StringCellValue);
                }
                if (t == typeof(long))
                {
                    value = Convert.ToInt64(cell.StringCellValue);
                }
            }
            else if (cell.CellType == NPOI.SS.UserModel.CellType.Formula)
            {
                // Get value even if cell is a formula
                if (t == typeof(float))
                {
                    value = Convert.ToSingle(cell.NumericCellValue);
                }
                if (t == typeof(double))
                {
                    value = Convert.ToDouble(cell.NumericCellValue);
                }
                if (t == typeof(short))
                {
                    value = Convert.ToInt16(cell.NumericCellValue);
                }
                if (t == typeof(int))
                {
                    value = Convert.ToInt32(cell.NumericCellValue);
                }
                if (t == typeof(long))
                {
                    value = Convert.ToInt64(cell.NumericCellValue);
                }
            }
        }
        else if (t == typeof(string) || t.IsArray)
        {
            // HACK: handles the case that a cell contains numeric value
            //       but a member field in a data class is defined as string type.
            //       e.g. string s = "123"
            if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
            {
                value = cell.NumericCellValue;
            }
            else
            {
                value = cell.StringCellValue;
            }
        }
        else if (t == typeof(bool))
        {
            value = cell.BooleanCellValue;
        }
        else if (t.IsGenericType)
        {
            if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
            {
                value = cell.NumericCellValue;
            }
            else
            {
                value = cell.StringCellValue;
            }
        }

        if (t.IsGenericType && t.GetGenericTypeDefinition().Equals(typeof(Nullable <>)))
        {
            var nc = new NullableConverter(t);
            return(nc.ConvertFrom(value));
        }

        if (t.IsEnum)
        {
            // for enum type, first get value by string then convert it to enum.
            value = cell.StringCellValue;
            return(Enum.Parse(t, value.ToString(), true));
        }
        else if (t.IsArray)
        {
            string strValue = value.ToString();

            if (t.GetElementType() == typeof(float))
            {
                return(ConvertExt.ToSingleArray(strValue));
            }

            if (t.GetElementType() == typeof(double))
            {
                return(ConvertExt.ToDoubleArray(strValue));
            }

            if (t.GetElementType() == typeof(short))
            {
                return(ConvertExt.ToInt16Array(strValue));
            }

            if (t.GetElementType() == typeof(int))
            {
                return(ConvertExt.ToInt32Array(strValue));
            }

            if (t.GetElementType() == typeof(long))
            {
                return(ConvertExt.ToInt64Array(strValue));
            }

            if (t.GetElementType() == typeof(string))
            {
                return(ConvertExt.ToStringArray(strValue));
            }
        }
        else if (t.IsGenericType)
        {
            string strValue = value.ToString();

            if (t == typeof(List <float>))
            {
                return(ConvertExt.ToSingleList(strValue));
            }

            if (t == typeof(List <double>))
            {
                return(ConvertExt.ToDoubleList(strValue));
            }

            if (t == typeof(List <short>))
            {
                return(ConvertExt.ToInt16List(strValue));
            }

            if (t == typeof(List <int>))
            {
                return(ConvertExt.ToInt32List(strValue));
            }

            if (t == typeof(List <long>))
            {
                return(ConvertExt.ToInt64List(strValue));
            }

            if (t == typeof(List <string>))
            {
                return(ConvertExt.ToStringList(strValue));
            }
        }

        // for all other types, convert its corresponding type.
        if (cell.CellType == NPOI.SS.UserModel.CellType.String)
        {
            string str = (string)value;
            str   = str.Replace("\\n", "\n");
            value = str;
        }

        return(Convert.ChangeType(value, t));
    }
Ejemplo n.º 20
0
        public void TestChangeType()
        {
            TestImplicitChangeTypeHelper(ConvertExt.ChangeType);

            #region 6.2.1 显式数值转换

            Assert.AreEqual((byte)10, ConvertExt.ChangeType((sbyte)10, typeof(byte)));
            Assert.AreEqual((ushort)11, ConvertExt.ChangeType((sbyte)11, typeof(ushort)));
            Assert.AreEqual((uint)12, ConvertExt.ChangeType((sbyte)12, typeof(uint)));
            Assert.AreEqual((ulong)13, ConvertExt.ChangeType((sbyte)13, typeof(ulong)));
            Assert.AreEqual((char)14, ConvertExt.ChangeType((sbyte)14, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((byte)10, typeof(sbyte)));
            Assert.AreEqual((char)11, ConvertExt.ChangeType((byte)11, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((short)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((short)11, typeof(byte)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((short)13, typeof(ushort)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((short)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((short)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((short)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ushort)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((ushort)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((ushort)12, typeof(short)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((ushort)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((int)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((int)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((int)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((int)13, typeof(ushort)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((int)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((int)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((int)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((uint)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((uint)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((uint)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((uint)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((uint)14, typeof(int)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((uint)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((long)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((long)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((long)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((long)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((long)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((long)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((long)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((long)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ulong)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((ulong)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((ulong)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((ulong)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((ulong)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((ulong)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((ulong)16, typeof(long)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((ulong)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((char)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((char)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((char)12, typeof(short)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((float)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((float)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((float)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((float)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((float)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((float)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((float)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((float)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((float)18, typeof(char)));
            Assert.AreEqual((decimal)21, ConvertExt.ChangeType((float)21, typeof(decimal)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((double)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((double)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((double)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((double)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((double)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((double)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((double)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((double)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((double)18, typeof(char)));
            Assert.AreEqual((float)19, ConvertExt.ChangeType((double)19, typeof(float)));
            Assert.AreEqual((decimal)21, ConvertExt.ChangeType((double)21, typeof(decimal)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((decimal)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((decimal)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((decimal)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((decimal)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((decimal)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((decimal)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((decimal)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((decimal)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((decimal)18, typeof(char)));
            Assert.AreEqual((float)19, ConvertExt.ChangeType((decimal)19, typeof(float)));
            Assert.AreEqual((double)20, ConvertExt.ChangeType((decimal)20, typeof(double)));

            #endregion             // 6.2.1 显式数值转换

            #region 6.2.2 显式枚举转换

            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((sbyte)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((byte)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((short)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ushort)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((int)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((uint)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((long)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ulong)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((char)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((float)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((double)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((decimal)1, typeof(Tristate)));
            Assert.AreEqual((sbyte)1, ConvertExt.ChangeType(Tristate.True, typeof(sbyte)));
            Assert.AreEqual((byte)1, ConvertExt.ChangeType(Tristate.True, typeof(byte)));
            Assert.AreEqual((short)1, ConvertExt.ChangeType(Tristate.True, typeof(short)));
            Assert.AreEqual((ushort)1, ConvertExt.ChangeType(Tristate.True, typeof(ushort)));
            Assert.AreEqual((int)1, ConvertExt.ChangeType(Tristate.True, typeof(int)));
            Assert.AreEqual((uint)1, ConvertExt.ChangeType(Tristate.True, typeof(uint)));
            Assert.AreEqual((long)1, ConvertExt.ChangeType(Tristate.True, typeof(long)));
            Assert.AreEqual((ulong)1, ConvertExt.ChangeType(Tristate.True, typeof(ulong)));
            Assert.AreEqual((char)1, ConvertExt.ChangeType(Tristate.True, typeof(char)));
            Assert.AreEqual((float)1, ConvertExt.ChangeType(Tristate.True, typeof(float)));
            Assert.AreEqual((double)1, ConvertExt.ChangeType(Tristate.True, typeof(double)));
            Assert.AreEqual((decimal)1, ConvertExt.ChangeType(Tristate.True, typeof(decimal)));
            Assert.AreEqual((BindingFlags)1, ConvertExt.ChangeType(Tristate.True, typeof(BindingFlags)));
            Assert.AreEqual((Tristate)1, ConvertExt.ChangeType((BindingFlags)1, typeof(Tristate)));

            #endregion             // 6.2.2 显式枚举转换

            #region 6.2.3 可以为 null 的显式转换

            // 从 S 到 T? 的显式转换。
            Assert.AreEqual((int?)10, ConvertExt.ChangeType((long)10, typeof(int?)));
            // 从 S? 到 T? 的显式转换。
            Assert.AreEqual((int?)10, ConvertExt.ChangeType((long?)10, typeof(int?)));
            Assert.AreEqual((int?)null, ConvertExt.ChangeType((long?)null, typeof(int?)));
            // 从 S? 到 T 的显式转换。
            Assert.AreEqual(10, ConvertExt.ChangeType((long?)10, typeof(int)));

            #endregion             // 6.2.3 可以为 null 的显式转换
        }
Ejemplo n.º 21
0
        public static T Get <T>(string key)
        {
            var val = HttpRuntime.Cache[key];

            return(ConvertExt.ChangeType <T>(val));
        }