Ejemplo n.º 1
0
 /// <summary>
 /// Initialises a new Pattern Lab MVC controller
 /// </summary>
 public PatternLabController()
 {
     if (Provider == null)
     {
         // Set the pattern provider if not set
         Provider = new PatternProvider();
     }
 }
Ejemplo n.º 2
0
 private IPattern ChoosePattern(INotifyAction action, string senderName, ASC.Notify.Engine.NotifyRequest request)
 {
     if (action == Constants.EditPage)
     {
         var tag = request.Arguments.Find(t => t.Tag == "ChangeType");
         if (tag != null && tag.Value.ToString() == "new wiki page comment")
         {
             return(PatternProvider.GetPattern(new NotifyAction(tag.Value.ToString()), senderName));
         }
     }
     return(null);
 }
Ejemplo n.º 3
0
 private IPattern ChoosePattern(INotifyAction action, string senderName, Notify.Engine.NotifyRequest request)
 {
     if (action == NotifyConstants.Event_NewCommentForMessage)
     {
         var tag = request.Arguments.Find(tv => tv.Tag == "EventType");
         if (tag != null)
         {
             return(PatternProvider.GetPattern(new NotifyAction(Convert.ToString(tag.Value)), senderName));
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
 private IPattern ChoosePattern(INotifyAction action, string senderName, ASC.Notify.Engine.NotifyRequest request)
 {
     if (action == Constants.EditPage)
     {
         var tag = request.Arguments.Find((tv) => tv.Tag.Name == "ChangeType");
         if (tag != null && tag.Value.ToString() == "new wiki page comment")
         {
             if (senderName == "email.sender")
             {
                 return(PatternProvider.GetPattern("3"));
             }
             if (senderName == "messanger.sender")
             {
                 return(PatternProvider.GetPattern("3_jabber"));
             }
         }
     }
     return(null);
 }
Ejemplo n.º 5
0
        public ActionResult ViewSingle(string id, string masterName, bool?parse, bool?enableCss, bool?noCache)
        {
            var model = new ViewDataDictionary(Provider.Data())
            {
                { "cssEnabled", (enableCss.HasValue && enableCss.Value).ToString().ToLower() },
                { "cacheBuster", noCache.HasValue&& noCache.Value ? "0" : Provider.CacheBuster() }
            };

            var pattern = Provider.Patterns()
                          .FirstOrDefault(p => p.PathDash.Equals(id, StringComparison.InvariantCultureIgnoreCase));

            if (pattern == null)
            {
                return(null);
            }

            var childLineages  = new List <object>();
            var parentLineages = new List <object>();

            foreach (var childPattern in pattern.Lineages.Select(partial => Provider.Patterns().FirstOrDefault(
                                                                     p => p.Partial.Equals(partial, StringComparison.InvariantCultureIgnoreCase)))
                     .Where(childPattern => childPattern != null))
            {
                childLineages.Add(new
                {
                    lineagePath =
                        string.Format("../../{0}/{1}",
                                      PatternProvider.FolderNamePattern.TrimStart(PatternProvider.IdentifierHidden),
                                      childPattern.HtmlUrl),
                    lineagePattern = childPattern.Partial
                });
            }

            var parentPatterns = Provider.Patterns().Where(p => p.Lineages.Contains(pattern.Partial));

            foreach (var parentPattern in parentPatterns)
            {
                parentLineages.Add(new
                {
                    lineagePath =
                        string.Format("../../{0}/{1}",
                                      PatternProvider.FolderNamePattern.TrimStart(PatternProvider.IdentifierHidden),
                                      parentPattern.HtmlUrl),
                    lineagePattern = parentPattern.Partial
                });
            }

            var serializer = new JavaScriptSerializer();

            model.Add("viewSingle", true);
            model.Add("patternPartial", pattern.Partial);
            model.Add("lineage", serializer.Serialize(childLineages));
            model.Add("lineageR", serializer.Serialize(parentLineages));
            model.Add("patternState", PatternProvider.GetState(pattern));

            foreach (var data in pattern.Data)
            {
                if (model.ContainsKey(data.Key))
                {
                    model[data.Key] = data.Value;
                }
                else
                {
                    model.Add(data.Key, data.Value);
                }
            }

            if (!string.IsNullOrEmpty(masterName))
            {
                return(View(pattern.ViewUrl, masterName, model));
            }

            var html = pattern.Html;

            if (parse.HasValue && parse.Value)
            {
                html = Render.StringToString(html, model, new MustacheTemplateLocator().GetTemplate);
            }

            return(Content(Server.HtmlEncode(html)));
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Initialises a new Pattern Lab builder
 /// </summary>
 /// <param name="provider">The pattern provider</param>
 /// <param name="controllerContext">The current controller context</param>
 public Builder(PatternProvider provider, ControllerContext controllerContext)
 {
     _controllerContext = controllerContext;
     _provider          = provider;
 }
 public JimuServerBusMassTransitRabbitMqModule(IConfigurationRoot jimuAppSettings) : base(jimuAppSettings)
 {
     _options         = jimuAppSettings.GetSection(typeof(MassTransitOptions).Name).Get <MassTransitOptions>();
     _patternProvider = new PatternProvider();
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Initialise a new pseudo-pattern - http://patternlab.io/docs/pattern-pseudo-patterns.html
        /// </summary>
        /// <param name="filePath">The template file path</param>
        /// <param name="pseudoName">The pseudo pattern name</param>
        public Pattern(string filePath, string pseudoName)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return;
            }

            _filePath   = filePath;
            _pseudoName = pseudoName;

            // Parse the file path to replace data file extensions with template extensions (Needed for pseudo patterns)
            var path =
                ViewUrl.Replace(string.Format("~/{0}/", PatternProvider.FolderNamePattern), string.Empty)
                .Replace(PatternProvider.FileExtensionMustache, string.Empty)
                .Replace(PatternProvider.FileExtensionData, string.Empty);

            // Split the file path into fragments
            var pathFragments =
                path.Split(new[] { Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).ToList();

            if (pathFragments.Count <= 0)
            {
                return;
            }

            // Set the name to the last fragment
            _name = pathFragments[pathFragments.Count - 1];

            // If the name ends with a state value (e.g. @inprogress), split and set the state
            var nameFragments =
                _name.Split(new[] { PatternProvider.IdentifierState }, StringSplitOptions.RemoveEmptyEntries)
                .ToList();

            if (nameFragments.Count > 1)
            {
                _name  = nameFragments[0];
                _state = nameFragments[1];
            }

            // Remove the name from the fragments
            pathFragments.RemoveAt(pathFragments.Count - 1);

            // Set type and sub-type from the remaining fragments
            _type    = pathFragments.Count > 0 ? pathFragments[0] : string.Empty;
            _subType = pathFragments.Count > 1 ? pathFragments[1] : string.Empty;

            // Read contents of template
            _html = File.ReadAllText(_filePath);

            // Find references to other patterns with the contents of the template
            _lineages = new List <string>();

            foreach (
                var partial in
                Regex.Matches(_html, "{{>(.*?)}}")
                .Cast <Match>()
                .Select(match => match.Groups[1].Value.StripPatternParameters())
                .Where(partial => !_lineages.Contains(partial)))
            {
                _lineages.Add(partial);
            }

            _pseudoPatterns = new List <string>();
            _data           = new ViewDataDictionary();

            var folder = new DirectoryInfo(Path.GetDirectoryName(_filePath) ?? string.Empty);

            // Find all the data files for the pattern
            var dataFiles = folder.GetFiles(string.Concat("*", PatternProvider.FileExtensionData), SearchOption.AllDirectories)
                            .Where(d => d.Name.StartsWith(_name)).ToList();

            if (!string.IsNullOrEmpty(_pseudoName))
            {
                // If handling a pseudo pattern read in shared data files and the pseudo specific data file
                dataFiles =
                    dataFiles.Where(
                        d =>
                        !d.Name.Contains(PatternProvider.IdentifierPsuedo) ||
                        d.Name.EndsWith(string.Concat(_pseudoName, PatternProvider.FileExtensionData))).ToList();
            }
            else
            {
                // If the pattern isn't a pseudo pattern, create a list of pseudo patterns from data files
                foreach (
                    var pseudoNameFragments in
                    dataFiles.Where(d => d.Name.Contains(PatternProvider.IdentifierPsuedo))
                    .Select(dataFile => dataFile.Name.Replace(PatternProvider.FileExtensionData, string.Empty)
                            .Split(new[] { PatternProvider.IdentifierPsuedo },
                                   StringSplitOptions.RemoveEmptyEntries)
                            .ToList()).Where(pseudoNameFragments => pseudoNameFragments.Count > 0))
                {
                    pseudoName = pseudoNameFragments.Count > 1 ? pseudoNameFragments[1] : string.Empty;
                    if (!_pseudoPatterns.Contains(pseudoName))
                    {
                        _pseudoPatterns.Add(pseudoName);
                    }
                }

                // Ignore pseudo data files
                dataFiles = dataFiles.Where(d => !d.Name.Contains(PatternProvider.IdentifierPsuedo)).ToList();
            }

            // Append contents of data files into provider data collection
            _data = PatternProvider.AppendData(_data, dataFiles);
        }
Ejemplo n.º 9
0
        public Pattern(string filePath, string pseudoName)
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return;
            }

            _filePath   = filePath;
            _pseudoName = pseudoName;

            var path =
                ViewUrl.Replace(string.Format("~/{0}/", PatternProvider.FolderNamePattern), string.Empty)
                .Replace(PatternProvider.FileExtensionMustache, string.Empty)
                .Replace(PatternProvider.FileExtensionData, string.Empty);

            var pathFragments =
                path.Split(new[] { Path.AltDirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).ToList();

            if (pathFragments.Count <= 0)
            {
                return;
            }

            _name = pathFragments[pathFragments.Count - 1];

            var nameFragments =
                _name.Split(new[] { PatternProvider.IdentifierState }, StringSplitOptions.RemoveEmptyEntries)
                .ToList();

            if (nameFragments.Count > 1)
            {
                _name  = nameFragments[0];
                _state = nameFragments[1];
            }

            pathFragments.RemoveAt(pathFragments.Count - 1);

            _type     = pathFragments.Count > 0 ? pathFragments[0] : string.Empty;
            _subType  = pathFragments.Count > 1 ? pathFragments[1] : string.Empty;
            _html     = File.ReadAllText(_filePath);
            _lineages = new List <string>();

            foreach (
                var partial in
                Regex.Matches(_html, "{{>(.*?)}}")
                .Cast <Match>()
                .Select(match => match.Groups[1].Value.StripPatternParameters())
                .Where(partial => !_lineages.Contains(partial)))
            {
                _lineages.Add(partial);
            }

            _pseudoPatterns = new List <string>();
            _data           = new ViewDataDictionary();

            var folder    = new DirectoryInfo(Path.GetDirectoryName(_filePath) ?? string.Empty);
            var dataFiles = folder.GetFiles(string.Concat("*", PatternProvider.FileExtensionData), SearchOption.AllDirectories)
                            .Where(d => d.Name.StartsWith(_name)).ToList();

            if (!string.IsNullOrEmpty(_pseudoName))
            {
                dataFiles =
                    dataFiles.Where(
                        d =>
                        !d.Name.Contains(PatternProvider.IdentifierPsuedo) ||
                        d.Name.EndsWith(string.Concat(_pseudoName, PatternProvider.FileExtensionData))).ToList();
            }
            else
            {
                foreach (
                    var pseudoNameFragments in
                    dataFiles.Where(d => d.Name.Contains(PatternProvider.IdentifierPsuedo))
                    .Select(dataFile => dataFile.Name.Replace(PatternProvider.FileExtensionData, string.Empty)
                            .Split(new[] { PatternProvider.IdentifierPsuedo },
                                   StringSplitOptions.RemoveEmptyEntries)
                            .ToList()).Where(pseudoNameFragments => pseudoNameFragments.Count > 0))
                {
                    pseudoName = pseudoNameFragments.Count > 1 ? pseudoNameFragments[1] : string.Empty;
                    if (!_pseudoPatterns.Contains(pseudoName))
                    {
                        _pseudoPatterns.Add(pseudoName);
                    }
                }

                dataFiles = dataFiles.Where(d => !d.Name.Contains(PatternProvider.IdentifierPsuedo)).ToList();
            }

            _data = PatternProvider.AppendData(_data, dataFiles);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Renders 'View all' pages
        /// </summary>
        /// <param name="id">The dash delimited pattern type value to filter with (e.g. organisms-global)</param>
        /// <param name="enableCss">Generate CSS for each pattern. Currently unsupported</param>
        /// <param name="noCache">Set the cacheBuster value to 0</param>
        /// <returns>A 'View all' page</returns>
        public ActionResult ViewAll(string id, bool?enableCss, bool?noCache)
        {
            // Get data from provider and set additional variables
            var model = new ViewDataDictionary(Provider.Data())
            {
                { "cssEnabled", (enableCss.HasValue && enableCss.Value).ToString().ToLower() },
                { "cacheBuster", noCache.HasValue&& noCache.Value ? "0" : Provider.CacheBuster() }
            };

            // Get the list of patterns to exclude from the page
            var styleGuideExcludes = Provider.Setting("styleGuideExcludes")
                                     .Split(new[] { PatternProvider.IdentifierDelimiter }, StringSplitOptions.RemoveEmptyEntries).ToList();

            // Filter out any hidden or exluded patterns
            var patterns =
                Provider.Patterns()
                .Where(
                    p =>
                    !p.Hidden && !string.IsNullOrEmpty(p.SubType) && !styleGuideExcludes.Contains(p.Type) &&
                    !styleGuideExcludes.Contains(p.Type.StripOrdinals()))
                .ToList();

            if (!string.IsNullOrEmpty(id))
            {
                // If a type filter is specified, add it to the data collection
                model.Add("patternPartial", string.Format("viewall-{0}", id.StripOrdinals()));

                // Find only the patterns that match the type filter
                patterns =
                    patterns.Where(p => p.TypeDash.Equals(id, StringComparison.InvariantCultureIgnoreCase)).ToList();
            }

            var partials = new List <object>();

            foreach (var pattern in patterns)
            {
                // Load the pattern's template
                var html     = Render.StringToString(pattern.Html, model, new MustacheTemplateLocator().GetTemplate);
                var lineages = new List <object>();

                // TODO: #8 Implement CSS Rule Saver as per the PHP version. Currently unsupported
                var css = string.Empty;

                // Gather a list of child patterns that the current pattern's template references
                foreach (var partial in pattern.Lineages)
                {
                    var childPattern =
                        Provider.Patterns().FirstOrDefault(
                            p => p.Partial.Equals(partial, StringComparison.InvariantCultureIgnoreCase));

                    if (childPattern != null)
                    {
                        lineages.Add(new
                        {
                            lineagePath =
                                string.Format("../../{0}/{1}",
                                              PatternProvider.FolderNamePattern.TrimStart(PatternProvider.IdentifierHidden),
                                              childPattern.HtmlUrl),
                            lineagePattern = partial,
                            lineageState   = PatternProvider.GetState(childPattern)
                        });
                    }
                }

                // Generate a JSON object to holder the patterns data
                partials.Add(new
                {
                    patternPartial       = pattern.Partial,
                    patternLink          = pattern.HtmlUrl,
                    patternName          = pattern.Name.StripOrdinals().ToDisplayCase(),
                    patternPartialCode   = html,
                    patternPartialCodeE  = Server.HtmlEncode(html),
                    patternLineageExists = lineages.Count > 0,
                    patternLineages      = lineages,
                    patternCSSExists     = !string.IsNullOrEmpty(css),
                    patternCSS           = css
                });
            }

            // Add all the pattern data to the main data collection
            model.Add("partials", partials);

            // Render 'View all' page
            return(View(PatternProvider.ViewNameViewAllPage, PatternProvider.FileNameMaster, model));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Renders a single pattern page
        /// </summary>
        /// <param name="id">The dash delimited path of the pattern (e.g. atoms-colors)</param>
        /// <param name="masterName">The optional master view to use when rendering</param>
        /// <param name="parse">Whether or not to parse the template and replace Mustache tags with data</param>
        /// <param name="enableCss">Generate CSS for each pattern. Currently unsupported</param>
        /// <param name="noCache">Set the cacheBuster value to 0</param>
        /// <returns>A pattern page</returns>
        public ActionResult ViewSingle(string id, string masterName, bool?parse, bool?enableCss, bool?noCache)
        {
            // Get data from provider and set additional variables
            var model = new ViewDataDictionary(Provider.Data())
            {
                { "cssEnabled", (enableCss.HasValue && enableCss.Value).ToString().ToLower() },
                { "cacheBuster", noCache.HasValue&& noCache.Value ? "0" : Provider.CacheBuster() }
            };

            // Find pattern from dash delimited path
            var pattern = Provider.Patterns()
                          .FirstOrDefault(p => p.PathDash.Equals(id, StringComparison.InvariantCultureIgnoreCase));

            if (pattern == null)
            {
                return(null);
            }

            var childLineages  = new List <object>();
            var parentLineages = new List <object>();

            // Gather a list of child patterns that the current pattern's template references
            foreach (var childPattern in pattern.Lineages.Select(partial => Provider.Patterns().FirstOrDefault(
                                                                     p => p.Partial.Equals(partial, StringComparison.InvariantCultureIgnoreCase)))
                     .Where(childPattern => childPattern != null))
            {
                childLineages.Add(new
                {
                    lineagePath =
                        string.Format("../../{0}/{1}",
                                      PatternProvider.FolderNamePattern.TrimStart(PatternProvider.IdentifierHidden),
                                      childPattern.HtmlUrl),
                    lineagePattern = childPattern.Partial,
                    lineageState   = PatternProvider.GetState(childPattern)
                });
            }

            // Gather a list of parent patterns whose templates references the current pattern
            var parentPatterns = Provider.Patterns().Where(p => p.Lineages.Contains(pattern.Partial));

            foreach (var parentPattern in parentPatterns)
            {
                parentLineages.Add(new
                {
                    lineagePath =
                        string.Format("../../{0}/{1}",
                                      PatternProvider.FolderNamePattern.TrimStart(PatternProvider.IdentifierHidden),
                                      parentPattern.HtmlUrl),
                    lineagePattern = parentPattern.Partial,
                    lineageState   = PatternProvider.GetState(parentPattern)
                });
            }

            var serializer = new JavaScriptSerializer();

            // Add pattern specific data to the data collection
            model.Add("viewSingle", true);
            model.Add("patternPartial", pattern.Partial);
            model.Add("lineage", serializer.Serialize(childLineages));
            model.Add("lineageR", serializer.Serialize(parentLineages));
            model.Add("patternState", PatternProvider.GetState(pattern));

            // For all values in the pattern data collection update the main data collection
            foreach (var data in pattern.Data)
            {
                if (model.ContainsKey(data.Key))
                {
                    model[data.Key] = data.Value;
                }
                else
                {
                    model.Add(data.Key, data.Value);
                }
            }

            if (!string.IsNullOrEmpty(masterName))
            {
                // If a master has been specified, render 'pattern.html' using master view
                return(View(pattern.ViewUrl, masterName, model));
            }

            var html = pattern.Html;

            if (parse.HasValue && parse.Value)
            {
                // If not parsing, render 'pattern.mustache'
                html = Render.StringToString(html, model, new MustacheTemplateLocator().GetTemplate);
            }

            // Else, render 'pattern.escaped.html'
            return(Content(Server.HtmlEncode(html)));
        }
Ejemplo n.º 12
0
        public void PatternGeneratorのGetNextテスト()
        {
            EnvConfig.Unity = false;
            var patterns       = new List <PatternDefinition>();
            var stairsOneLeft  = new PatternProvider().Get(Pattern.StairsOneLeft);
            var stairsTwoRight = new PatternProvider().Get(Pattern.StairsTwoRight);

            patterns.Add(stairsOneLeft);
            patterns.Add(stairsTwoRight);
            this.Generator.Inject(new PatternGenerator.Config()
            {
                Patterns = patterns,
            });

            var stairsOneLeftColors1P = new Dictionary <int, double>();
            var stairsOneLeftObs1P    = new Dictionary <int, double>();
            var stairsOneLeftColors2P = new Dictionary <int, double>();
            var stairsOneLeftObs2P    = new Dictionary <int, double>();

            // 1P-紫-StairsOneLeft
            var unitStr = new List <string>();

            unitStr.Add("10000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            var key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));

            this.AddCount(stairsOneLeftColors1P, key);

            // 1P-赤-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("10000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors1P, key);
            this.AddCount(stairsOneLeftColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors1P, key);

            // 1P-おじゃま-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("10000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftObs1P, key);

            // 2P-青-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);

            // 2P-紫-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);

            // 2P-赤-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftColors2P, key);

            // 2P-おじゃま-StairsOneLeft
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            key = stairsOneLeft.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsOneLeftObs2P, key);

            var stairsTwoRightColors1P = new Dictionary <int, double>();
            var stairsTwoRightObs1P    = new Dictionary <int, double>();
            var stairsTwoRightColors2P = new Dictionary <int, double>();
            var stairsTwoRightObs2P    = new Dictionary <int, double>();

            // 1P-紫-StairsTwoRight
            unitStr = new List <string>();
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors1P, key);

            // 1P-赤-StairsTwoRight
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors1P, key);
            this.AddCount(stairsTwoRightColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors1P, key);
            this.AddCount(stairsTwoRightColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("10000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("10000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors1P, key);

            // 1P-おじゃま-StairsTwoRight
            unitStr = new List <string>();
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("10000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightObs1P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("10000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightObs1P, key);

            // 2P-青-StairsTwoRight
            unitStr = new List <string>();
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors2P, key);

            // 2P-紫-StairsTwoRight
            unitStr = new List <string>();
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors2P, key);
            unitStr = new List <string>();
            unitStr.Add("00000000");
            unitStr.Add("01000000");
            unitStr.Add("00000000");
            unitStr.Add("00000000");
            key = stairsTwoRight.GetIndex(FieldContextHelper.ConvertDigitStrsToUnit(unitStr));
            this.AddCount(stairsTwoRightColors2P, key);

            var context = TestHelper.Receiver.Receive("../../resources/generators/patterngenerator/test-field-in-001-001.txt");
            var actual  = this.Generator.GetNext(context);

            Assert.AreEqual(RaisedIndex * 8, actual.Length);

            var raisedIndex = 0;

            // 1P-StairsOneLeft-color
            foreach (var kv in stairsOneLeftColors1P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsOneLeft.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 1P-StairsOneLeft-obs
            foreach (var kv in stairsOneLeftObs1P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsOneLeft.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 1P-StairsTwoRight-color
            foreach (var kv in stairsTwoRightColors1P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsTwoRight.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 1P-StairsTwoRight-obs
            foreach (var kv in stairsTwoRightObs1P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsTwoRight.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 2P-StairsOneLeft-color
            foreach (var kv in stairsOneLeftColors2P)
            {
                FileHelper.WriteLine($"key:{kv.Key} value:{kv.Value}");
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsOneLeft.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 2P-StairsOneLeft-obs
            foreach (var kv in stairsOneLeftObs2P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsOneLeft.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 2P-StairsTwoRight-color
            foreach (var kv in stairsTwoRightColors2P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsTwoRight.GetIndexKey(kv.Key)));
            }
            raisedIndex += RaisedIndex;

            // 2P-StairsTwoRight-obs
            foreach (var kv in stairsTwoRightObs2P)
            {
                Assert.AreEqual(kv.Value, actual[kv.Key + raisedIndex], 0.0d, DebugHelper.ConvertUintToFieldUnit(stairsTwoRight.GetIndexKey(kv.Key)));
            }
        }