예제 #1
0
        public void _001_Create_Open_Stat_Close()
        {
            var path       = _temp.GetPath("001.mkd");
            var createData = CreateDataFactory.CreateDefault();

            _operator.Create(path, createData, true);
            try {
                _operator.Create(path, createData, false);
            } catch (OperationException e) {
                Assert.Equal(59, e.StatusCode);
            }
            _operator.Create(path, createData, true);
            var positionBlock = _operator.Open(path);
            var statData      = _operator.Stat(positionBlock);

            _operator.Close(positionBlock);
            Assert.Equal(createData.FileSpec.Flag & (FileFlag)0xedff, statData.FileSpec.Flag & (FileFlag)0xedff);
            Assert.Equal(createData.FileSpec.RecordLength, statData.FileSpec.RecordLength);
            Assert.Equal(createData.FileSpec.PageSize, statData.FileSpec.PageSize);
            var createKeySpecs = createData.KeySpecs.GetEnumerator();
            var statKeySpecs   = statData.KeySpecs.GetEnumerator();

            while (createKeySpecs.MoveNext())
            {
                statKeySpecs.MoveNext();
                Assert.Equal(createKeySpecs.Current.Position, statKeySpecs.Current.Position);
                Assert.Equal(createKeySpecs.Current.Length, statKeySpecs.Current.Length);
                Assert.Equal(createKeySpecs.Current.KeyType, statKeySpecs.Current.KeyType);
                Assert.Equal(createKeySpecs.Current.Flag, statKeySpecs.Current.Flag);
            }
        }
예제 #2
0
        public void Create(Path path = null, bool overwrite = false)
        {
            var recordInfo = this.RecordInfo;
            var fileSpec   = recordInfo.GetCreateFileSpec();
            var keySpecs   = recordInfo.Keys.SelectMany(k => k.Segments.Select(s => s.GetCreateKeySpec()));
            var createData = new CreateData(fileSpec, keySpecs);
            var filePath   = Path.Merge(path, this.Path).GetFilePath();

            _nativeOperator.Create(filePath, createData, overwrite);
            if (recordInfo.OwnerName != null)
            {
                var positionBlock = _nativeOperator.Open(filePath);
                try {
                    _nativeOperator.SetOwner(positionBlock, recordInfo.OwnerName, recordInfo.OwnerNameOption);
                } finally {
                    _nativeOperator.Close(positionBlock);
                }
            }
        }