Esempio n. 1
0
// ReSharper disable once RedundantOverridenMember

/*
 *      public override string GetStringHashCode()
 *      {
 *          // We need to override it to make sure this method gets added to the String prototype.
 *          return this;
 *      }
 */

        public override int GetHashCode()
        {
            var result = Jsni.@this().member("$hashCode");

            if (result == null)
            {
                var hash = 0;
                for (var i = 0; i < Length; i++)
                {
                    var character = this.As <JsString>().charCodeAt(i);
                    hash = ((hash << 5) - hash) + character;
                    hash = hash & hash; // Convert to 32bit integer
                }
                result = hash.As <JsObject>();
                Jsni.@this().memberset("$hashCode", result);
            }
            return(result.As <int>());
        }
Esempio n. 2
0
        public void IndexerOverride()
        {
            Jsni.reference("window").memberset("IndexerOverride", Jsni.@object(new
            {
                items = Jsni.array(),
                item  = Jsni.function((index, value) =>
                {
                    if (Jsni.arguments().As <JsArray>().length == 1)
                    {
                        return(Jsni.@this().member("items").As <JsArray>()[index]);
                    }
                    else
                    {
                        Jsni.@this().member("items").As <JsArray>()[index] = value;
                        return(null);
                    }
                })
            }));
            var indexerOverride = Jsni.reference("window").member("IndexerOverride").As <IndexerOverrideClass>();

            indexerOverride[3] = "foo";
            QUnit.AreEqual(indexerOverride[3], "foo");
        }