Ejemplo n.º 1
0
        public void TestLongConstructor()
        {
            var jasmineId = new JasmineId(74547317860381854);

            Assert.Equal(0, jasmineId.Reserved);
            Assert.Equal(8678450, jasmineId.Timestamp);
            Assert.Equal(0, jasmineId.Region);
            Assert.Equal(0, jasmineId.Machine);
            Assert.Equal(439454, jasmineId.Sequence);
            Assert.Equal(JasmineId.JasmineIdTimer.JasmineIdEpoch.AddSeconds(8678450), jasmineId.CreationTime);
            Assert.Equal("74547317860381854", jasmineId.ToString());
        }
Ejemplo n.º 2
0
        public void TestParse()
        {
            var jasmineId1 = JasmineId.Parse("74547317860381854");

            Assert.True(jasmineId1.ToLong().Equals(74547317860381854));
            Assert.True(jasmineId1.ToString() == "74547317860381854");

            var jasmineId2 = JasmineId.Parse("-9148838245189002336");

            Assert.True(jasmineId2.ToLong().Equals(-9148838245189002336));
            Assert.True(jasmineId2.ToString() == "-9148838245189002336");
        }
Ejemplo n.º 3
0
        public void TestFullSizeCustomizedArgumentsConstructor()
        {
            var jasmineId = new JasmineId(1, 8676875, 5, 256, 23456);

            Assert.Equal(1, jasmineId.Reserved);
            Assert.Equal(8676875, jasmineId.Timestamp);
            Assert.Equal(5, jasmineId.Region);
            Assert.Equal(256, jasmineId.Machine);
            Assert.Equal(23456, jasmineId.Sequence);
            Assert.Equal(JasmineId.JasmineIdTimer.JasmineIdEpoch.AddSeconds(8676875), jasmineId.CreationTime);
            Assert.Equal("-9148838245189002336", jasmineId.ToString());
        }
Ejemplo n.º 4
0
        private dynamic GenerateId(dynamic parameters)
        {
            byte   reserved  = 0;
            long   timestamp = -1;
            byte   region    = 0;
            ushort machine   = 0;
            int    sequence  = -1;

            if (this.Request.Query.reserved.HasValue)
            {
                if (!byte.TryParse(this.Request.Query.reserved.Value.ToString(), out reserved))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.timestamp.HasValue)
            {
                if (!long.TryParse(this.Request.Query.timestamp.Value.ToString(), out timestamp) ||
                    timestamp < 0)
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.region.HasValue)
            {
                if (!byte.TryParse(this.Request.Query.region.Value.ToString(), out region))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.machine.HasValue)
            {
                if (!ushort.TryParse(this.Request.Query.machine.Value.ToString(), out machine))
                {
                    return(HttpStatusCode.BadRequest);
                }
            }
            if (this.Request.Query.sequence.HasValue)
            {
                if (!int.TryParse(this.Request.Query.sequence.Value.ToString(), out sequence) ||
                    sequence < 0)
                {
                    return(HttpStatusCode.BadRequest);
                }
            }

            return(JasmineId.GenerateNewId(
                       reserved: reserved,
                       timestamp: (timestamp > 0 ? (long?)timestamp : null),
                       region: region,
                       machine: machine,
                       sequence: (sequence > 0 ? (int?)sequence : null)).ToLong().ToString());
        }
Ejemplo n.º 5
0
        private dynamic DecodeId(dynamic parameters)
        {
            if (!this.Request.Query.id.HasValue)
            {
                return(HttpStatusCode.BadRequest);
            }

            JasmineId id;

            if (!JasmineId.TryParse(this.Request.Query.id.ToString(), out id))
            {
                return(HttpStatusCode.BadRequest);
            }

            return(this.Response.AsJson(id));
        }